UNPKG

@period-year-norway/ngx-bootstrap

Version:
1 lines 525 kB
{"version":3,"file":"period-year-norway-ngx-bootstrap-chronos.mjs","sources":["../../../../src/chronos/utils.ts","../../../../src/chronos/utils/type-checks.ts","../../../../src/chronos/units/aliases.ts","../../../../src/chronos/units/constants.ts","../../../../src/chronos/utils/zero-fill.ts","../../../../src/chronos/format/format.ts","../../../../src/chronos/create/date-from-array.ts","../../../../src/chronos/utils/date-getters.ts","../../../../src/chronos/parse/regex.ts","../../../../src/chronos/parse/token.ts","../../../../src/chronos/units/priorities.ts","../../../../src/chronos/units/day-of-month.ts","../../../../src/chronos/create/parsing-flags.ts","../../../../src/chronos/units/year.ts","../../../../src/chronos/units/month.ts","../../../../src/chronos/utils/date-setters.ts","../../../../src/chronos/create/clone.ts","../../../../src/chronos/utils/start-end-of.ts","../../../../src/chronos/units/day-of-year.ts","../../../../src/chronos/units/week-calendar-utils.ts","../../../../src/chronos/locale/locale.class.ts","../../../../src/chronos/locale/calendar.ts","../../../../src/chronos/locale/locale.defaults.ts","../../../../src/chronos/utils/compare-arrays.ts","../../../../src/chronos/units/week.ts","../../../../src/chronos/units/week-year.ts","../../../../src/chronos/units/timezone.ts","../../../../src/chronos/units/timestamp.ts","../../../../src/chronos/units/second.ts","../../../../src/chronos/units/quarter.ts","../../../../src/chronos/units/offset.ts","../../../../src/chronos/units/minute.ts","../../../../src/chronos/units/millisecond.ts","../../../../src/chronos/units/hour.ts","../../../../src/chronos/locale/locales.ts","../../../../src/chronos/duration/valid.ts","../../../../src/chronos/utils/abs-ceil.ts","../../../../src/chronos/duration/bubble.ts","../../../../src/chronos/duration/humanize.ts","../../../../src/chronos/duration/constructor.ts","../../../../src/chronos/create/valid.ts","../../../../src/chronos/create/from-string.ts","../../../../src/chronos/format.ts","../../../../src/chronos/utils/defaults.ts","../../../../src/chronos/create/from-array.ts","../../../../src/chronos/create/check-overflow.ts","../../../../src/chronos/create/from-string-and-format.ts","../../../../src/chronos/create/from-string-and-array.ts","../../../../src/chronos/create/from-object.ts","../../../../src/chronos/create/from-anything.ts","../../../../src/chronos/create/local.ts","../../../../src/chronos/utils/abs-round.ts","../../../../src/chronos/utils/date-compare.ts","../../../../src/chronos/duration/create.ts","../../../../src/chronos/moment/add-subtract.ts","../../../../src/chronos/units/day-of-week.ts","../../../../src/chronos/i18n/ar.ts","../../../../src/chronos/i18n/bg.ts","../../../../src/chronos/i18n/ca.ts","../../../../src/chronos/i18n/cs.ts","../../../../src/chronos/i18n/da.ts","../../../../src/chronos/i18n/de.ts","../../../../src/chronos/i18n/en-gb.ts","../../../../src/chronos/i18n/es-do.ts","../../../../src/chronos/i18n/es.ts","../../../../src/chronos/i18n/es-pr.ts","../../../../src/chronos/i18n/es-us.ts","../../../../src/chronos/i18n/et.ts","../../../../src/chronos/i18n/fi.ts","../../../../src/chronos/i18n/fr.ts","../../../../src/chronos/i18n/gl.ts","../../../../src/chronos/i18n/he.ts","../../../../src/chronos/i18n/hi.ts","../../../../src/chronos/i18n/hu.ts","../../../../src/chronos/i18n/hr.ts","../../../../src/chronos/i18n/id.ts","../../../../src/chronos/i18n/it.ts","../../../../src/chronos/i18n/ja.ts","../../../../src/chronos/i18n/ka.ts","../../../../src/chronos/i18n/kk.ts","../../../../src/chronos/i18n/ko.ts","../../../../src/chronos/i18n/lt.ts","../../../../src/chronos/i18n/lv.ts","../../../../src/chronos/i18n/mn.ts","../../../../src/chronos/i18n/nb.ts","../../../../src/chronos/i18n/nl-be.ts","../../../../src/chronos/i18n/nl.ts","../../../../src/chronos/i18n/pl.ts","../../../../src/chronos/i18n/pt-br.ts","../../../../src/chronos/i18n/ro.ts","../../../../src/chronos/i18n/ru.ts","../../../../src/chronos/i18n/sk.ts","../../../../src/chronos/i18n/sl.ts","../../../../src/chronos/i18n/sq.ts","../../../../src/chronos/i18n/sv.ts","../../../../src/chronos/i18n/th.ts","../../../../src/chronos/i18n/th-be.ts","../../../../src/chronos/i18n/tr.ts","../../../../src/chronos/i18n/uk.ts","../../../../src/chronos/i18n/vi.ts","../../../../src/chronos/i18n/zh-cn.ts","../../../../src/chronos/period-year-norway-ngx-bootstrap-chronos.ts"],"sourcesContent":["\r\n\r\nexport function mod(n: number, x: number): number {\r\n  return (n % x + x) % x;\r\n}\r\n\r\nexport function absFloor(num: number): number {\r\n  return num < 0 ? Math.ceil(num) || 0 : Math.floor(num);\r\n}\r\n\r\n","import { absFloor } from '../utils';\r\n\r\nexport function isString(str: any): str is string {\r\n  return typeof str === 'string';\r\n}\r\n\r\nexport function isDate(value: any): value is Date {\r\n  return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\r\n}\r\n\r\nexport function isBoolean(value: any): value is boolean {\r\n  return value === true || value === false;\r\n}\r\n\r\nexport function isDateValid(date: Date): boolean {\r\n  return date && date.getTime && !isNaN(date.getTime());\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nexport function isFunction(fn: any): fn is Function {\r\n  return (\r\n    fn instanceof Function ||\r\n    Object.prototype.toString.call(fn) === '[object Function]'\r\n  );\r\n}\r\n\r\nexport function isNumber(value?: any): value is number {\r\n  return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\r\n}\r\n\r\nexport function isArray<T>(input?: any): input is T[] {\r\n  return (\r\n    input instanceof Array ||\r\n    Object.prototype.toString.call(input) === '[object Array]'\r\n  );\r\n}\r\n\r\nexport function hasOwnProp<T>(a: T /*object*/, b: string): b is Extract<keyof T, string> {\r\n  return Object.prototype.hasOwnProperty.call(a, b);\r\n}\r\n\r\nexport function isObject<T>(input: any /*object*/): input is T {\r\n  // IE8 will treat undefined and null as object if it wasn't for\r\n  // input != null\r\n  return (\r\n    input != null && Object.prototype.toString.call(input) === '[object Object]'\r\n  );\r\n}\r\n\r\nexport function isObjectEmpty(obj: any): boolean {\r\n  if (Object.getOwnPropertyNames) {\r\n    return (Object.getOwnPropertyNames(obj).length === 0);\r\n  }\r\n  let k;\r\n  for (k in obj) {\r\n    // eslint-disable-next-line no-prototype-builtins\r\n    if (obj.hasOwnProperty(k)) {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\n\r\nexport function isUndefined(input: any): boolean {\r\n  return input === void 0;\r\n}\r\n\r\nexport function toInt<T>(argumentForCoercion: string | number | T): number {\r\n  const coercedNumber = +argumentForCoercion;\r\n  let value = 0;\r\n\r\n  if (coercedNumber !== 0 && isFinite(coercedNumber)) {\r\n    value = absFloor(coercedNumber);\r\n  }\r\n\r\n  return value;\r\n}\r\n","import { hasOwnProp, isString } from '../utils/type-checks';\r\nimport { DateObject, UnitOfTime } from '../types';\r\n\r\nconst aliases: { [key: string]: string } = {};\r\n\r\nexport type ExtendedUnitOfTime = UnitOfTime | 'date' | 'week' | 'isoWeek' | 'dayOfYear' |\r\n  'weekday' | 'isoWeekday' | 'second' | 'millisecond' | 'minute' | 'hour' | 'quarter' | 'weekYear' | 'isoWeekYear';\r\n\r\nconst _mapUnits: { [key: string]: UnitOfTime } = {\r\n  date: 'day',\r\n  hour: 'hours',\r\n  minute: 'minutes',\r\n  second: 'seconds',\r\n  millisecond: 'milliseconds'\r\n};\r\n\r\nexport function addUnitAlias(unit: ExtendedUnitOfTime, shorthand: string): void {\r\n  const lowerCase = unit.toLowerCase();\r\n  let _unit = unit;\r\n  if (lowerCase in _mapUnits) {\r\n    _unit = _mapUnits[lowerCase];\r\n  }\r\n  aliases[lowerCase] = aliases[`${lowerCase}s`] = aliases[shorthand] = _unit;\r\n}\r\n\r\nexport function normalizeUnits(units: string | string[]): string {\r\n  return isString(units) ? aliases[units] || aliases[units.toLowerCase()] : undefined;\r\n}\r\n\r\nexport function normalizeObjectUnits(inputObject: Record<string, unknown>): DateObject {\r\n  const normalizedInput: Record<string, unknown> = {};\r\n  let normalizedProp;\r\n  let prop;\r\n\r\n  for (prop in inputObject) {\r\n    if (hasOwnProp(inputObject, prop)) {\r\n      normalizedProp = normalizeUnits(prop);\r\n      if (normalizedProp) {\r\n        normalizedInput[normalizedProp] = inputObject[prop];\r\n      }\r\n    }\r\n  }\r\n\r\n  return normalizedInput;\r\n}\r\n","// place in new Date([array])\r\nexport const YEAR = 0;\r\nexport const MONTH = 1;\r\nexport const DATE = 2;\r\nexport const HOUR = 3;\r\nexport const MINUTE = 4;\r\nexport const SECOND = 5;\r\nexport const MILLISECOND = 6;\r\nexport const WEEK = 7;\r\nexport const WEEKDAY = 8;\r\n","export function zeroFill(num: number,\r\n                         targetLength: number,\r\n                         forceSign?: boolean): string {\r\n  const absNumber = `${Math.abs(num)}`;\r\n  const zerosToFill = targetLength - absNumber.length;\r\n  const sign = num >= 0;\r\n  const _sign = sign ? (forceSign ? '+' : '') : '-';\r\n  // todo: this is crazy slow\r\n  const _zeros = Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1);\r\n\r\n  return (_sign + _zeros + absNumber);\r\n}\r\n","import { Locale } from '../locale/locale.class';\r\nimport { zeroFill } from '../utils/zero-fill';\r\nimport { isFunction } from '../utils/type-checks';\r\nimport { DateFormatterOptions, DateFormatterFn } from '../types';\r\n\r\nexport const formatFunctions: {\r\n  [key: string]: (date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string;\r\n} = {};\r\nexport const formatTokenFunctions: { [key: string]: DateFormatterFn } = {};\r\n\r\nexport const formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\r\n\r\n// token:    'M'\r\n// padded:   ['MM', 2]\r\n// ordinal:  'Mo'\r\n// callback: function () { this.month() + 1 }\r\nexport function addFormatToken(token: string,\r\n                               padded: [string, number, boolean],\r\n                               ordinal: string,\r\n                               callback: DateFormatterFn): void {\r\n\r\n  if (token) {\r\n    formatTokenFunctions[token] = callback;\r\n  }\r\n\r\n  if (padded) {\r\n    formatTokenFunctions[padded[0]] = function (): string {\r\n      return zeroFill(callback.apply(null, arguments), padded[1], padded[2]);\r\n    };\r\n  }\r\n\r\n  if (ordinal) {\r\n    formatTokenFunctions[ordinal] = function (date: Date, opts: DateFormatterOptions): string {\r\n      return opts.locale.ordinal(callback.apply(null, arguments), token);\r\n    };\r\n  }\r\n}\r\n\r\nexport function makeFormatFunction(format: string):\r\n  (date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string {\r\n\r\n  const array: string[] = format.match(formattingTokens);\r\n  const length = array.length;\r\n\r\n  const formatArr: string[] | DateFormatterFn[] = new Array(length);\r\n\r\n  for (let i = 0; i < length; i++) {\r\n    formatArr[i] = formatTokenFunctions[array[i]]\r\n      ? formatTokenFunctions[array[i]]\r\n      : removeFormattingTokens(array[i]);\r\n  }\r\n\r\n  return function (date: Date, locale: Locale, isUTC: boolean, offset = 0): string {\r\n\r\n    let output = '';\r\n    for (let j = 0; j < length; j++) {\r\n      output += isFunction(formatArr[j])\r\n        ? (formatArr[j] as DateFormatterFn).call(null, date, {format, locale, isUTC, offset})\r\n        : formatArr[j];\r\n    }\r\n\r\n    return output;\r\n  };\r\n}\r\n\r\nfunction removeFormattingTokens(input: string): string {\r\n  if (input.match(/\\[[\\s\\S]/)) {\r\n    return input.replace(/^\\[|\\]$/g, '');\r\n  }\r\n\r\n  return input.replace(/\\\\/g, '');\r\n}\r\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport function createUTCDate(y?: number, m?: number, d?: number): Date {\r\n  // eslint-disable-next-line prefer-rest-params\r\n  const date = new Date(Date.UTC.apply(null, arguments));\r\n\r\n  // the Date.UTC function remaps years 0-99 to 1900-1999\r\n  if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\r\n    date.setUTCFullYear(y);\r\n  }\r\n\r\n  return date;\r\n}\r\n\r\nexport function createDate(y?: number,\r\n                           m = 0,\r\n                           d = 1,\r\n                           h = 0,\r\n                           M = 0,\r\n                           s = 0,\r\n                           ms = 0): Date {\r\n  const date = new Date(y, m, d, h, M, s, ms);\r\n\r\n  // the date constructor remaps years 0-99 to 1900-1999\r\n  if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\r\n    date.setFullYear(y);\r\n  }\r\n\r\n  return date;\r\n}\r\n","import { createDate } from '../create/date-from-array';\r\n\r\nexport function getHours(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCHours() : date.getHours();\r\n}\r\n\r\nexport function getMinutes(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCMinutes() : date.getMinutes();\r\n}\r\n\r\nexport function getSeconds(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCSeconds() : date.getSeconds();\r\n}\r\n\r\nexport function getMilliseconds(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCMilliseconds() : date.getMilliseconds();\r\n}\r\nexport function getTime(date: Date): number {\r\n  return date.getTime();\r\n}\r\n\r\nexport function getDay(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCDay() : date.getDay();\r\n}\r\n\r\nexport function getDate(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCDate() : date.getDate();\r\n}\r\n\r\nexport function getMonth(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCMonth() : date.getMonth();\r\n}\r\n\r\nexport function getFullYear(date: Date, isUTC = false): number {\r\n  return isUTC ? date.getUTCFullYear() : date.getFullYear();\r\n}\r\n\r\nexport function getUnixTime(date: Date): number {\r\n  return Math.floor(date.valueOf() / 1000);\r\n}\r\n\r\nexport function unix(date: Date): number {\r\n  return Math.floor(date.valueOf() / 1000);\r\n}\r\n\r\nexport function getFirstDayOfMonth(date: Date): Date {\r\n  return createDate(\r\n    date.getFullYear(),\r\n    date.getMonth(),\r\n    1,\r\n    date.getHours(),\r\n    date.getMinutes(),\r\n    date.getSeconds()\r\n  );\r\n}\r\n\r\nexport function daysInMonth(date: Date): number {\r\n  return _daysInMonth(date.getFullYear(), date.getMonth());\r\n}\r\n\r\nexport function _daysInMonth(year: number, month: number): number {\r\n  return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\r\n}\r\n\r\nexport function isFirstDayOfWeek(date: Date, firstDayOfWeek?: number): boolean {\r\n  return date.getDay() === Number(firstDayOfWeek);\r\n}\r\n\r\nexport function isSameMonth(date1?: Date, date2?: Date) {\r\n  if (!date1 || !date2) {\r\n    return false;\r\n  }\r\n\r\n  return isSameYear(date1, date2) && getMonth(date1) === getMonth(date2);\r\n}\r\n\r\nexport function isSameYear(date1?: Date, date2?: Date) {\r\n  if (!date1 || !date2) {\r\n    return false;\r\n  }\r\n\r\n  return getFullYear(date1) === getFullYear(date2);\r\n}\r\n\r\nexport function isSameDay(date1?: Date, date2?: Date): boolean {\r\n  if (!date1 || !date2) {\r\n    return false;\r\n  }\r\n\r\n  return (\r\n    isSameYear(date1, date2) &&\r\n    isSameMonth(date1, date2) &&\r\n    getDate(date1) === getDate(date2)\r\n  );\r\n}\r\n","import { hasOwnProp, isFunction } from '../utils/type-checks';\r\nimport { Locale } from '../locale/locale.class';\r\n\r\nexport const match1 = /\\d/;            //       0 - 9\r\nexport const match2 = /\\d\\d/;          //      00 - 99\r\nexport const match3 = /\\d{3}/;         //     000 - 999\r\nexport const match4 = /\\d{4}/;         //    0000 - 9999\r\nexport const match6 = /[+-]?\\d{6}/;    // -999999 - 999999\r\nexport const match1to2 = /\\d\\d?/;         //       0 - 99\r\nexport const match3to4 = /\\d\\d\\d\\d?/;     //     999 - 9999\r\nexport const match5to6 = /\\d\\d\\d\\d\\d\\d?/; //   99999 - 999999\r\nexport const match1to3 = /\\d{1,3}/;       //       0 - 999\r\nexport const match1to4 = /\\d{1,4}/;       //       0 - 9999\r\nexport const match1to6 = /[+-]?\\d{1,6}/;  // -999999 - 999999\r\n\r\nexport const matchUnsigned = /\\d+/;           //       0 - inf\r\nexport const matchSigned = /[+-]?\\d+/;      //    -inf - inf\r\n\r\nexport const matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\r\nexport const matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\r\n\r\nexport const matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\r\n\r\n// any word (or two) characters or numbers including two/three word month in arabic.\r\n// includes scottish gaelic two word and hyphenated months\r\nexport const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\r\n\r\nexport type RegExpTokenFn = (isStrict: boolean, locale: Locale) => RegExp;\r\nconst regexes: {[key: string]: RegExpTokenFn} = {};\r\n\r\n\r\nexport function addRegexToken(token: string, regex: RegExp | RegExpTokenFn, strictRegex?: RegExp): void {\r\n  if (isFunction(regex)) {\r\n    regexes[token] = regex;\r\n\r\n    return;\r\n  }\r\n\r\n  regexes[token] = function (isStrict: boolean, locale: Locale) {\r\n    return (isStrict && strictRegex) ? strictRegex : regex;\r\n  };\r\n}\r\n\r\nexport function getParseRegexForToken(token: string, locale: Locale): RegExp {\r\n  const _strict = false;\r\n  if (!hasOwnProp(regexes, token)) {\r\n    return new RegExp(unescapeFormat(token));\r\n  }\r\n\r\n  return regexes[token](_strict, locale);\r\n}\r\n\r\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\r\nfunction unescapeFormat(str: string): string {\r\n  return regexEscape(str\r\n    .replace('\\\\', '')\r\n    .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, (matched, p1, p2, p3, p4) => p1 || p2 || p3 || p4)\r\n  );\r\n}\r\n\r\nexport function regexEscape(str: string): string {\r\n  return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n}\r\n","import { hasOwnProp, isArray, isFunction, isNumber, isString, toInt } from '../utils/type-checks';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { DateArray, DateParseTokenFn } from '../types';\r\n\r\nconst tokens: {[key: string]: DateParseTokenFn} = {};\r\n\r\nexport function addParseToken(token: string | string[], callback: DateParseTokenFn | number) {\r\n  const _token = isString(token) ? [token] : token;\r\n  let func = callback;\r\n\r\n  if (isNumber(callback)) {\r\n    func = function (input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n      array[callback] = toInt(input);\r\n\r\n      return config;\r\n    };\r\n  }\r\n\r\n  if (isArray<string>(_token) && isFunction(func)) {\r\n    let i;\r\n    for (i = 0; i < _token.length; i++) {\r\n      tokens[_token[i]] = func;\r\n    }\r\n  }\r\n}\r\n\r\nexport function addWeekParseToken(token: string[], callback: DateParseTokenFn): void {\r\n  addParseToken(token, function (input: string, array: DateArray, config: DateParsingConfig, _token: string): DateParsingConfig {\r\n    config._w = config._w || {};\r\n\r\n    return callback(input, config._w, config, _token);\r\n  });\r\n}\r\n\r\n\r\nexport function addTimeToArrayFromToken(token: string, input: string, config: DateParsingConfig): DateParsingConfig {\r\n  if (input != null && hasOwnProp(tokens, token)) {\r\n    tokens[token](input, config._a, config, token);\r\n  }\r\n\r\n  return config;\r\n}\r\n","const priorities: {[key: string]: number} = {};\r\n\r\nexport function addUnitPriority(unit: string, priority: number): void {\r\n  priorities[unit] = priority;\r\n}\r\n\r\n/*\r\nexport function getPrioritizedUnits(unitsObj) {\r\n  const units = [];\r\n  let unit;\r\n  for (unit in unitsObj) {\r\n    if (unitsObj.hasOwnProperty(unit)) {\r\n      units.push({ unit, priority: priorities[unit] });\r\n    }\r\n  }\r\n  units.sort(function (a, b) {\r\n    return a.priority - b.priority;\r\n  });\r\n\r\n  return units;\r\n}\r\n*/\r\n","import { addFormatToken } from '../format/format';\r\nimport { getDate } from '../utils/date-getters';\r\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { DATE } from './constants';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { DateArray, DateFormatterOptions } from '../types';\r\nimport { addUnitAlias } from './aliases';\r\nimport { addUnitPriority } from './priorities';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\n\r\n\r\nexport function initDayOfMonth() {\r\n// FORMATTING\r\n\r\n  addFormatToken('D', ['DD', 2, false], 'Do',\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getDate(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('date', 'D');\r\n\r\n// PRIOROITY\r\n  addUnitPriority('date', 9);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('D', match1to2);\r\n  addRegexToken('DD', match1to2, match2);\r\n  addRegexToken('Do', function(isStrict, locale) {\r\n    return locale._dayOfMonthOrdinalParse || locale._ordinalParse;\r\n  });\r\n\r\n  addParseToken(['D', 'DD'], DATE);\r\n  addParseToken(\r\n    'Do',\r\n    function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n      array[DATE] = toInt(input.match(match1to2)[0]);\r\n\r\n      return config;\r\n    }\r\n  );\r\n}\r\n","import { DateParsingConfig, DateParsingFlags } from './parsing.types';\r\n\r\nfunction defaultParsingFlags(): DateParsingFlags {\r\n  // We need to deep clone this object.\r\n  return {\r\n    empty: false,\r\n    unusedTokens: [],\r\n    unusedInput: [],\r\n    overflow: -2,\r\n    charsLeftOver: 0,\r\n    nullInput: false,\r\n    invalidMonth: null,\r\n    invalidFormat: false,\r\n    userInvalidated: false,\r\n    iso: false,\r\n    parsedDateParts: [],\r\n    meridiem: null,\r\n    rfc2822: false,\r\n    weekdayMismatch: false\r\n  };\r\n}\r\n\r\nexport function getParsingFlags(config: DateParsingConfig): DateParsingFlags {\r\n  if (config._pf == null) {\r\n    config._pf = defaultParsingFlags();\r\n  }\r\n\r\n  return config._pf;\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { getFullYear } from '../utils/date-getters';\r\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { YEAR } from './constants';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addUnitAlias } from './aliases';\r\nimport { DateFormatterOptions } from '../types';\r\n\r\n// FORMATTING\r\n\r\nfunction getYear(date: Date, opts: DateFormatterOptions): string {\r\n  if (opts.locale.getFullYear) {\r\n    return opts.locale.getFullYear(date, opts.isUTC).toString();\r\n  }\r\n  return getFullYear(date, opts.isUTC).toString();\r\n}\r\n\r\nexport function initYear() {\r\n  addFormatToken('Y', null, null,\r\n    function (date: Date, opts: DateFormatterOptions): string {\r\n    const y = getFullYear(date, opts.isUTC);\r\n\r\n    return y <= 9999 ? y.toString(10) : `+${y}`;\r\n  });\r\n\r\n  addFormatToken(null, ['YY', 2, false], null,\r\n    function (date: Date, opts: DateFormatterOptions): string {\r\n    return (getFullYear(date, opts.isUTC) % 100).toString(10);\r\n  });\r\n\r\n  addFormatToken(null, ['YYYY', 4, false], null, getYear);\r\n  addFormatToken(null, ['YYYYY', 5, false], null, getYear);\r\n  addFormatToken(null, ['YYYYYY', 6, true], null, getYear);\r\n\r\n  // ALIASES\r\n\r\n  addUnitAlias('year', 'y');\r\n\r\n  // PRIORITIES\r\n\r\n  addUnitPriority('year', 1);\r\n\r\n  // PARSING\r\n\r\n  addRegexToken('Y', matchSigned);\r\n  addRegexToken('YY', match1to2, match2);\r\n  addRegexToken('YYYY', match1to4, match4);\r\n  addRegexToken('YYYYY', match1to6, match6);\r\n  addRegexToken('YYYYYY', match1to6, match6);\r\n\r\n  addParseToken(['YYYYY', 'YYYYYY'], YEAR);\r\n  addParseToken('YYYY', function (input, array, config) {\r\n    array[YEAR] = input.length === 2 ? parseTwoDigitYear(input) : toInt(input);\r\n\r\n    return config;\r\n  });\r\n  addParseToken('YY', function (input, array, config) {\r\n    array[YEAR] = parseTwoDigitYear(input);\r\n\r\n    return config;\r\n  });\r\n  addParseToken('Y', function (input, array, config) {\r\n    array[YEAR] = parseInt(input, 10);\r\n\r\n    return config;\r\n  });\r\n}\r\n\r\nexport function parseTwoDigitYear(input: string): number {\r\n  return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\r\n}\r\n\r\nexport function daysInYear(year: number): number {\r\n  return isLeapYear(year) ? 366 : 365;\r\n}\r\n\r\nexport function isLeapYear(year: number): boolean {\r\n  return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { isLeapYear } from './year';\r\nimport { mod } from '../utils';\r\nimport { getMonth } from '../utils/date-getters';\r\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { MONTH } from './constants';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addUnitAlias } from './aliases';\r\nimport { getParsingFlags } from '../create/parsing-flags';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { DateArray, DateFormatterOptions } from '../types';\r\n\r\n// todo: this is duplicate, source in date-getters.ts\r\nexport function daysInMonth(year: number, month: number): number {\r\n  if (isNaN(year) || isNaN(month)) {\r\n    return NaN;\r\n  }\r\n  const modMonth = mod(month, 12);\r\n  const _year = year + (month - modMonth) / 12;\r\n\r\n  return modMonth === 1\r\n    ? isLeapYear(_year) ? 29 : 28\r\n    : (31 - modMonth % 7 % 2);\r\n}\r\n\r\nexport function initMonth() {\r\n// FORMATTING\r\n\r\n  addFormatToken('M', ['MM', 2, false], 'Mo',\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMonth(date, opts.isUTC) + 1).toString(10);\r\n    }\r\n  );\r\n\r\n  addFormatToken('MMM', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return opts.locale.monthsShort(date, opts.format, opts.isUTC);\r\n    }\r\n  );\r\n\r\n  addFormatToken('MMMM', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return opts.locale.months(date, opts.format, opts.isUTC);\r\n    }\r\n  );\r\n\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('month', 'M');\r\n\r\n// PRIORITY\r\n\r\n  addUnitPriority('month', 8);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('M', match1to2);\r\n  addRegexToken('MM', match1to2, match2);\r\n  addRegexToken('MMM', function(isStrict, locale) {\r\n    return locale.monthsShortRegex(isStrict);\r\n  });\r\n  addRegexToken('MMMM', function(isStrict, locale) {\r\n    return locale.monthsRegex(isStrict);\r\n  });\r\n\r\n  addParseToken(['M', 'MM'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    array[MONTH] = toInt(input) - 1;\r\n\r\n    return config;\r\n  });\r\n\r\n  addParseToken(\r\n    ['MMM', 'MMMM'],\r\n    function(input: string, array: DateArray, config: DateParsingConfig, token: string): DateParsingConfig {\r\n      const month = config._locale.monthsParse(input, token, config._strict);\r\n      // if we didn't find a month name, mark the date as invalid.\r\n      if (month != null) {\r\n        array[MONTH] = month;\r\n      } else {\r\n        getParsingFlags(config).invalidMonth = !!input;\r\n      }\r\n\r\n      return config;\r\n    }\r\n  );\r\n}\r\n","import { TimeUnit } from '../types';\r\nimport { daysInMonth } from '../units/month';\r\nimport { isNumber } from './type-checks';\r\nimport { getDate, getFullYear, getMonth } from './date-getters';\r\nimport { isLeapYear } from '../units/year';\r\nimport { createDate } from '../create/date-from-array';\r\n\r\nconst defaultTimeUnit: TimeUnit = {\r\n  year: 0,\r\n  month: 0,\r\n  day: 0,\r\n  hour: 0,\r\n  minute: 0,\r\n  seconds: 0\r\n};\r\n\r\nexport function shiftDate(date: Date, unit: TimeUnit): Date {\r\n  const _unit = Object.assign({}, defaultTimeUnit, unit);\r\n  const year = date.getFullYear() + (_unit.year || 0);\r\n  const month = date.getMonth() + (_unit.month || 0);\r\n  let day = date.getDate() + (_unit.day || 0);\r\n  if (_unit.month && !_unit.day) {\r\n    day = Math.min(day, daysInMonth(year, month));\r\n  }\r\n\r\n  return createDate(\r\n    year,\r\n    month,\r\n    day,\r\n    date.getHours() + (_unit.hour || 0),\r\n    date.getMinutes() + (_unit.minute || 0),\r\n    date.getSeconds() + (_unit.seconds || 0)\r\n  );\r\n}\r\n\r\nexport function setFullDate(date: Date, unit: TimeUnit): Date {\r\n  return createDate(\r\n    getNum(date.getFullYear(), unit.year),\r\n    getNum(date.getMonth(), unit.month),\r\n    1, // day, to avoid issue with wrong months selection at the end of current month (#5371)\r\n    getNum(date.getHours(), unit.hour),\r\n    getNum(date.getMinutes(), unit.minute),\r\n    getNum(date.getSeconds(), unit.seconds),\r\n    getNum(date.getMilliseconds(), unit.milliseconds)\r\n  );\r\n}\r\n\r\nfunction getNum(def: number, num?: number): number {\r\n  return isNumber(num) ? num : def;\r\n}\r\n\r\nexport function setFullYear(date: Date, value: number, isUTC?: boolean): Date {\r\n  const _month = getMonth(date, isUTC);\r\n  const _date = getDate(date, isUTC);\r\n  const _year = getFullYear(date, isUTC);\r\n  if (isLeapYear(_year) && _month === 1 && _date === 29) {\r\n    const _daysInMonth = daysInMonth(value, _month);\r\n    isUTC ? date.setUTCFullYear(value, _month, _daysInMonth) : date.setFullYear(value, _month, _daysInMonth);\r\n  }\r\n\r\n  isUTC ? date.setUTCFullYear(value) : date.setFullYear(value);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setMonth(date: Date, value: number, isUTC?: boolean): Date {\r\n  const dayOfMonth = Math.min(getDate(date), daysInMonth(getFullYear(date), value));\r\n  isUTC ? date.setUTCMonth(value, dayOfMonth) : date.setMonth(value, dayOfMonth);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setDay(date: Date, value: number, isUTC?: boolean): Date {\r\n  isUTC ? date.setUTCDate(value) : date.setDate(value);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setHours(date: Date, value: number, isUTC?: boolean): Date {\r\n  isUTC ? date.setUTCHours(value) : date.setHours(value);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setMinutes(date: Date, value: number, isUTC?: boolean): Date {\r\n  isUTC ? date.setUTCMinutes(value) : date.setMinutes(value);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setSeconds(date: Date, value: number, isUTC?: boolean): Date {\r\n  isUTC ? date.setUTCSeconds(value) : date.setSeconds(value);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setMilliseconds(date: Date, value: number, isUTC?: boolean): Date {\r\n  isUTC ? date.setUTCMilliseconds(value) : date.setMilliseconds(value);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setDate(date: Date, value: number, isUTC?: boolean): Date {\r\n  isUTC ? date.setUTCDate(value) : date.setDate(value);\r\n\r\n  return date;\r\n}\r\n\r\nexport function setTime(date: Date, value: number): Date {\r\n  date.setTime(value);\r\n\r\n  return date;\r\n}\r\n","// fastest way to clone date\r\n// https://jsperf.com/clone-date-object2\r\nexport function cloneDate(date: Date): Date {\r\n  return new Date(date.getTime());\r\n}\r\n","import { TimeUnit, UnitOfTime } from '../types';\r\nimport {\r\n  setDate, setFullDate, setHours, setMilliseconds, setMinutes, setMonth, setSeconds,\r\n  shiftDate\r\n} from './date-setters';\r\nimport { cloneDate } from '../create/clone';\r\nimport { setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week';\r\nimport { getMonth } from './date-getters';\r\nimport { add, subtract } from '../moment/add-subtract';\r\n\r\nexport function startOf(date: Date, unit: UnitOfTime, isUTC?: boolean): Date {\r\n  const _date = cloneDate(date);\r\n  // the following switch intentionally omits break keywords\r\n  // to utilize falling through the cases.\r\n  switch (unit) {\r\n    case 'year':\r\n      setMonth(_date, 0, isUTC);\r\n    /* falls through */\r\n    case 'quarter':\r\n    case 'month':\r\n      setDate(_date, 1, isUTC);\r\n    /* falls through */\r\n    case 'week':\r\n    case 'isoWeek':\r\n    case 'day':\r\n    case 'date':\r\n      setHours(_date, 0, isUTC);\r\n    /* falls through */\r\n    case 'hours':\r\n      setMinutes(_date, 0, isUTC);\r\n    /* falls through */\r\n    case 'minutes':\r\n      setSeconds(_date, 0, isUTC);\r\n    /* falls through */\r\n    case 'seconds':\r\n      setMilliseconds(_date, 0, isUTC);\r\n  }\r\n\r\n  // weeks are a special case\r\n  if (unit === 'week') {\r\n    setLocaleDayOfWeek(_date, 0, {isUTC});\r\n  }\r\n  if (unit === 'isoWeek') {\r\n    setISODayOfWeek(_date, 1);\r\n  }\r\n\r\n  // quarters are also special\r\n  if (unit === 'quarter') {\r\n    setMonth(_date, Math.floor(getMonth(_date, isUTC) / 3) * 3, isUTC);\r\n  }\r\n\r\n  return _date;\r\n}\r\n\r\nexport function endOf(date: Date, unit: UnitOfTime, isUTC?: boolean): Date {\r\n  let _unit = unit;\r\n  // 'date' is an alias for 'day', so it should be considered as such.\r\n  if (_unit === 'date') {\r\n    _unit = 'day';\r\n  }\r\n\r\n  const start = startOf(date, _unit, isUTC);\r\n  const _step = add(start, 1, _unit === 'isoWeek' ? 'week' : _unit, isUTC);\r\n  const res = subtract(_step, 1, 'milliseconds', isUTC);\r\n\r\n  return res;\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { startOf } from '../utils/start-end-of';\r\nimport { addRegexToken, match1to3, match3 } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addUnitAlias } from './aliases';\r\nimport { DateArray, DateFormatterOptions } from '../types';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { add } from '../moment/add-subtract';\r\n\r\n\r\nexport function initDayOfYear() {\r\n// FORMATTING\r\n\r\n  addFormatToken('DDD', ['DDDD', 3, false], 'DDDo',\r\n    function(date: Date): string {\r\n      return getDayOfYear(date)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('dayOfYear', 'DDD');\r\n\r\n// PRIORITY\r\n\r\n  addUnitPriority('dayOfYear', 4);\r\n\r\n  addRegexToken('DDD', match1to3);\r\n  addRegexToken('DDDD', match3);\r\n  addParseToken(\r\n    ['DDD', 'DDDD'],\r\n    function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n      config._dayOfYear = toInt(input);\r\n\r\n      return config;\r\n    }\r\n  );\r\n}\r\n\r\nexport function getDayOfYear(date: Date, isUTC?: boolean): number {\r\n  const date1 = +startOf(date, 'day', isUTC);\r\n  const date2 = +startOf(date, 'year', isUTC);\r\n  const someDate = date1 - date2;\r\n  const oneDay = 1000 * 60 * 60 * 24;\r\n\r\n  return Math.round(someDate / oneDay) + 1;\r\n}\r\n\r\nexport function setDayOfYear(date: Date, input: number): Date {\r\n  const dayOfYear = getDayOfYear(date);\r\n\r\n  return add(date, (input - dayOfYear), 'day');\r\n}\r\n","/**\r\n *\r\n * @param {number} year\r\n * @param {number} dow - start-of-first-week\r\n * @param {number} doy - start-of-year\r\n * @returns {number}\r\n */\r\nimport { createUTCDate } from '../create/date-from-array';\r\nimport { daysInYear } from './year';\r\nimport { getDayOfYear } from './day-of-year';\r\nimport { getFullYear } from '../utils/date-getters';\r\n\r\nfunction firstWeekOffset(year: number, dow: number, doy: number): number {\r\n  // first-week day -- which january is always in the first week (4 for iso, 1 for other)\r\n  const fwd = dow - doy + 7;\r\n  // first-week day local weekday -- which local weekday is fwd\r\n  const fwdlw = (createUTCDate(year, 0, fwd).getUTCDay() - dow + 7) % 7;\r\n\r\n  return -fwdlw + fwd - 1;\r\n}\r\n\r\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\r\nexport function dayOfYearFromWeeks(\r\n  year: number,\r\n  week: number,\r\n  weekday: number,\r\n  dow: number,\r\n  doy: number\r\n): { year: number; dayOfYear: number } {\r\n  const localWeekday = (7 + weekday - dow) % 7;\r\n  const weekOffset = firstWeekOffset(year, dow, doy);\r\n  const dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;\r\n  let resYear: number;\r\n  let resDayOfYear: number;\r\n\r\n  if (dayOfYear <= 0) {\r\n    resYear = year - 1;\r\n    resDayOfYear = daysInYear(resYear) + dayOfYear;\r\n  } else if (dayOfYear > daysInYear(year)) {\r\n    resYear = year + 1;\r\n    resDayOfYear = dayOfYear - daysInYear(year);\r\n  } else {\r\n    resYear = year;\r\n    resDayOfYear = dayOfYear;\r\n  }\r\n\r\n  return {\r\n    year: resYear,\r\n    dayOfYear: resDayOfYear\r\n  };\r\n}\r\n\r\nexport function weekOfYear(date: Date, dow: number, doy: number, isUTC?: boolean): { week: number; year: number } {\r\n  const weekOffset = firstWeekOffset(getFullYear(date, isUTC), dow, doy);\r\n  const week = Math.floor((getDayOfYear(date, isUTC) - weekOffset - 1) / 7) + 1;\r\n  let resWeek: number;\r\n  let resYear: number;\r\n\r\n  if (week < 1) {\r\n    resYear = getFullYear(date, isUTC) - 1;\r\n    resWeek = week + weeksInYear(resYear, dow, doy);\r\n  } else if (week > weeksInYear(getFullYear(date, isUTC), dow, doy)) {\r\n    resWeek = week - weeksInYear(getFullYear(date, isUTC), dow, doy);\r\n    resYear = getFullYear(date, isUTC) + 1;\r\n  } else {\r\n    resYear = getFullYear(date, isUTC);\r\n    resWeek = week;\r\n  }\r\n\r\n  return {\r\n    week: resWeek,\r\n    year: resYear\r\n  };\r\n}\r\n\r\nexport function weeksInYear(year: number, dow: number, doy: number): number {\r\n  const weekOffset = firstWeekOffset(year, dow, doy);\r\n  const weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\r\n\r\n  return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\r\n}\r\n","import { weekOfYear } from '../units/week-calendar-utils';\r\nimport { hasOwnProp, isArray, isFunction } from '../utils/type-checks';\r\nimport { getDay, getMonth, getFullYear } from '../utils/date-getters';\r\nimport { matchWord, regexEscape } from '../parse/regex';\r\nimport { setDayOfWeek } from '../units/day-of-week';\r\n\r\nexport interface LocaleOptionsFormat {\r\n  format: string[];\r\n  standalone: string[];\r\n  isFormat?: RegExp;\r\n}\r\n\r\nexport type LocaleOptions = string[] | LocaleOptionsFormat;\r\n\r\nconst MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\r\nexport const defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\r\n  '_'\r\n);\r\nexport const defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\r\n  '_'\r\n);\r\nexport const defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\r\n  '_'\r\n);\r\nexport const defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split(\r\n  '_'\r\n);\r\nexport const defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\r\nexport const defaultLongDateFormat: { [index: string]: string } = {\r\n  LTS: 'h:mm:ss A',\r\n  LT: 'h:mm A',\r\n  L: 'MM/DD/YYYY',\r\n  LL: 'MMMM D, YYYY',\r\n  LLL: 'MMMM D, YYYY h:mm A',\r\n  LLLL: 'dddd, MMMM D, YYYY h:mm A'\r\n};\r\n\r\nexport const defaultOrdinal = '%d';\r\nexport const defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\r\n\r\nconst defaultMonthsShortRegex = matchWord;\r\nconst defaultMonthsRegex = matchWord;\r\n\r\nexport type OrdinalDateFn = (num: number, token?: string) => string;\r\nexport type PluralizeDateFn = (num: number, withoutSuffix: boolean,\r\n                               key?: string, isFuture?: boolean) => string;\r\n\r\nexport interface LocaleData {\r\n  abbr?: string;\r\n  parentLocale?: string;\r\n\r\n  months?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\r\n  monthsShort?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\r\n  monthsParseExact?: boolean;\r\n\r\n  weekdays?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\r\n  weekdaysShort?: string[] | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\r\n  weekdaysMin?: string[] | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\r\n  weekdaysParseExact?: boolean;\r\n\r\n  longDateFormat?: { [index: string]: string };\r\n  calendar?: {\r\n    [key: string]: (string\r\n      | ((date: Date, now?: Date) => string)\r\n      | ((dayOfWeek: number, isNextWeek: boolean) => string))\r\n  };\r\n  relativeTime?: { [key: string]: string | PluralizeDateFn };\r\n  dayOfMonthOrdinalParse?: RegExp;\r\n  ordinal?: string | OrdinalDateFn;\r\n\r\n  week?: { dow?: number; doy?: number };\r\n\r\n  invalidDate?: string;\r\n\r\n  monthsRegex?: RegExp;\r\n  monthsParse?: RegExp[];\r\n  monthsShortRegex?: RegExp;\r\n  monthsStrictRegex?: RegExp;\r\n  monthsShortStrictRegex?: RegExp;\r\n  longMonthsParse?: RegExp[];\r\n  shortMonthsParse?: RegExp[];\r\n\r\n  meridiemParse?: RegExp;\r\n\r\n  meridiemHour?(hour: number, meridiem: string): number;\r\n\r\n  preparse?(str: string, format?: string | string[]): string;\r\n\r\n  postformat?(str: string | number): string;\r\n\r\n  meridiem?(hour: number, minute?: number, isLower?: boolean): string;\r\n\r\n  isPM?(input: string): boolean;\r\n\r\n  getFullYear?(date: Date, isUTC: boolean): number;\r\n}\r\n\r\nexport class Locale {\r\n  parentLocale?: Locale;\r\n  _abbr: string;\r\n  _config: LocaleData;\r\n  meridiemHour: (hour: number, meridiem: string) => number;\r\n\r\n  _invalidDate: string;\r\n  _week: { dow: number; doy: number };\r\n  _dayOfMonthOrdinalParse: RegExp;\r\n  _ordinalParse: RegExp;\r\n  _meridiemParse: RegExp;\r\n\r\n  private _calendar: { [key: string]: string };\r\n  private _relativeTime: { future: string; past: string };\r\n  private _months: LocaleOptions;\r\n  private _monthsShort: LocaleOptions;\r\n  private _monthsRegex: RegExp;\r\n  private _monthsShortRegex: RegExp;\r\n  private _monthsStrictRegex: RegExp;\r\n  private _monthsShortStrictRegex: RegExp;\r\n  private _monthsParse: RegExp[];\r\n  private _longMonthsParse: string[] | RegExp[];\r\n  private _shortMonthsParse: string[] | RegExp[];\r\n  private _monthsParseExact: RegExp;\r\n  private _weekdaysParseExact: boolean;\r\n  private _weekdaysRegex: RegExp;\r\n  private _weekdaysShortRegex: RegExp;\r\n  private _weekdaysMinRegex: RegExp;\r\n\r\n  private _weekdaysStrictRegex: RegExp;\r\n  private _weekdaysShortStrictRegex: RegExp;\r\n  private _weekdaysMinStrictRegex: RegExp;\r\n\r\n  private _weekdays: LocaleOptions;\r\n  private _weekdaysShort: string[];\r\n  private _weekdaysMin: string[];\r\n  private _weekdaysParse: string[] | RegExp[];\r\n  private _minWeekdaysParse: string[] | RegExp[];\r\n  private _shortWeekdaysParse: string[] | RegExp[];\r\n  private _fullWeekdaysParse: RegExp[];\r\n  private _longDateFormat: { [key: string]: string };\r\n\r\n  private _ordinal: string;\r\n\r\n  constructor(config: LocaleData) {\r\n    if (config) {\r\n      this.set(config);\r\n    }\r\n  }\r\n\r\n  set(config: LocaleData): void {\r\n    let confKey;\r\n    for (confKey in config) {\r\n      // eslint-disable-next-line no-prototype-builtins\r\n      if (!config.hasOwnProperty(confKey)) {\r\n        continue;\r\n      }\r\n      const prop = config[confKey as keyof LocaleData];\r\n      const key = (isFunction(prop) ? confKey : `_${confKey}`) as keyof Locale;\r\n\r\n      this[key] = prop as any;\r\n    }\r\n\r\n    this._config = config;\r\n  }\r\n\r\n  calendar(key: string, date: Date, now: Date): string {\r\n    const output = this._calendar[key] || this._calendar[\"sameElse\"];\r\n\r\n    return isFunction(output) ? output.call(null, date, now) : output;\r\n  }\r\n\r\n  longDateFormat(key: string) {\r\n    const format = this._longDateFormat[key];\r\n    const formatUpper = this._longDateFormat[key.toUpperCase()];\r\n\r\n    if (format || !formatUpper) {\r\n      return format;\r\n    }\r\n\r\n    this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val: string) {\r\n      return val.slice(1);\r\n    });\r\n\r\n    return this._longDateFormat[key];\r\n  }\r\n\r\n  get invalidDate(): string {\r\n    return this._invalidDate;\r\n  }\r\n\r\n  set invalidDate(val: string) {\r\n    this._invalidDate = val;\r\n  }\r\n\r\n  ordinal(num: number, token?: string): string {\r\n    return this._ordinal.replace('%d', num.toString(10));\r\n  }\r\n\r\n  preparse(str: string, format?: string | string[]) {\r\n    return str;\r\n  }\r\n\r\n\r\n  getFullYear(date: Date, isUTC = false): number {\r\n    return getFullYear(date, isUTC);\r\n  }\r\n\r\n  postformat(str: string) {\r\n    return str;\r\n  }\r\n\r\n  relativeTime(num: number, withoutSuffix: boolean, str: 'future' | 'past', isFuture: boolean): string {\r\n    const output = this._relativeTime[str];\r\n\r\n    return (isFunction(output)) ?\r\n      output(num, withoutSuffix, str, isFuture) :\r\n      output.replace(/%d/i, num.toString(10));\r\n  }\r\n\r\n  pastFuture(diff: number, output: string): string {\r\n    const format = this._relativeTime[diff > 0 ? 'future' : 'past'];\r\n\r\n    return isFunction(format) ? format(output) : format.replace(/%s/i, output);\r\n  }\r\n\r\n  /** Months */\r\n  months(): string[];\r\n  months(date: Date, format?: string, isUTC?: boolean): string;\r\n  months(date?: Date, format?: string, isUTC = false): string | string[] {\r\n    if (!date) {\r\n      return isArray<string>(this._months)\r\n        ? this._months\r\n        : this._months.standalone;\r\n    }\r\n\r\n    if (isArray<string>(this._months)) {\r\n      return this._months[getMonth(date, isUTC)];\r\n    }\r\n\r\n    const key = (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\r\n      ? 'format'\r\n      : 'standalone';\r\n\r\n    return this._months[key][getMonth(date, isUTC)];\r\n  }\r\n\r\n  monthsShort(): string[];\r\n  monthsShort(date?: Date, format?: string, isUTC?: boolean): string;\r\n  monthsShort(date?: Date, format?: string, isUTC = false): string | string[] {\r\n    if (!date) {\r\n      return isArray<string>(this._monthsShort)\r\n        ? this._monthsShort\r\n        : this._monthsShort.standalone;\r\n    }\r\n\r\n    if (isArray<string>(this._monthsShort)) {\r\n      return this._monthsShort[getMonth(date, isUTC)];\r\n    }\r\n    const key = MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone';\r\n\r\n    return this._monthsShort[key][getMonth(date, isUTC)];\r\n  }\r\n\r\n  monthsParse(monthName: string, format?: string, strict?: boolean): number {\r\n    let date;\r\n    let regex;\r\n\r\n    if (this._monthsParseExact) {\r\n      return this.handleMonthStrictParse(monthName, format, strict);\r\n    }\r\n\r\n    if (!this._monthsParse) {\r\n      this._monthsParse = [];\r\n      this._longMonthsParse = [];\r\n      this._shortMonthsParse = [];\r\n    }\r\n\r\n    // TODO: add sorting\r\n    // Sorting makes sure if one month (or abbr) is a prefix of another\r\n    // see sorting in computeMonthsParse\r\n    let i;\r\n    for (i = 0; i < 12; i++) {\r\n      // make the regex if we don't have it already\r\n      date = new Date(Date.UTC(2000, i));\r\n      if (strict && !this._longMonthsParse[i]) {\r\n        const _months = this.months(date, '', true).replace('.', '');\r\n        const _shortMonths = this.monthsShort(date, '', true).replace('.', '');\r\n        this._longMonthsParse[i] = new RegExp(`^${_months}$`, 'i');\r\n        this._shortMonthsParse[i] = new RegExp(`^${_shortMonths}$`, 'i');\r\n      }\r\n      if (!strict && !this._monthsParse[i]) {\r\n        regex = `^${this.months(date, '', true)}|^${this.monthsShort(date, '', true)}`;\r\n        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\r\n      }\r\n      // testing the regex\r\n      if (strict && format === 'MMMM' && (this._longMonthsParse[i] as RegExp).test(monthName)) {\r\n        return i;\r\n      }\r\n\r\n      if (strict && format === 'MMM' && (this._shortMonthsParse[i] as RegExp).test(monthName)) {\r\n        return i;\r\n      }\r\n\r\n      if (!strict && this._monthsParse[i].test(monthName)) {\r\n        return i;\r\n      }\r\n    }\r\n  }\r\n\r\n  monthsRegex(isStrict: boolean): RegExp {\r\n    if (this._monthsParseExact) {\r\n      if (!hasOwnProp(this, '_monthsRegex')) {\r\n        this.computeMonthsParse();\r\n      }\r\n      if (isStrict) {\r\n        return this._monthsStrictRegex;\r\n      }\r\n\r\n      return this._monthsRegex;\r\n    }\r\n\r\n    if (!hasOwnProp(this, '_monthsRegex')) {\r\n      this._monthsRegex = defaultMonthsRegex;\r\n    }\r\n\r\n    return this._monthsStrictRegex && isStrict ?\r\n      this._monthsStrictRegex : this._monthsRegex;\r\n  }\r\n\r\n  monthsShortRegex(isStrict: boolean): RegExp {\r\n    if (this._monthsParseExact) {\r\n      if (!hasOwnProp(this, '_monthsRegex')) {\r\n        this.computeMonthsParse();\r\n      }\r\n      if (isStrict) {\r\n        return this._monthsShortStrictRegex;\r\n      }\r\n\r\n      return this._monthsShortRegex;\r\n    }\r\n    if (!hasOwnProp(this, '_monthsShortRegex')) {\r\n      this._monthsShortRegex = defaultMonthsShortRegex;\r\n    }\r\n\r\n    return this._monthsShortStrictRegex && isStrict ?\r\n      this._monthsShortStrictRegex : this._monthsShortRegex;\r\n  }\r\n\r\n  /** Week */\r\n  week(date: Date, isUTC?: boolean): number {\r\n    return weekOfYear(date, this._week.dow, this._week.doy, isUTC).week;\r\n  }\r\n\r\n  firstDayOfWeek(): number {\r\n    return this._week.dow;\r\n  }\r\n\r\n  firstDayOfYear(): number {\r\n    return this._week.doy;\r\n  }\r\n\r\n  /** Day of Week */\r\n  weekdays(): string[];\r\n  weekdays(date: Date, format?: string, isUTC?: boolean): string;\r\n  weekdays(date?: Date, format?: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return isArray<string>(this._weekdays)\r\n        ? this._weekdays\r\n        : this._weekdays.standalone;\r\n    }\r\n\r\n    if (isArray<string>(this._weekdays)) {\r\n      return this._weekdays[getDay(date, isUTC)];\r\n    }\r\n\r\n    const _key = this._weekdays.isFormat.test(format)\r\n      ? 'format'\r\n      : 'standalone';\r\n\r\n    return this._weekdays[_key][getDay(date, isUTC)];\r\n  }\r\n\r\n  weekdaysMin(): string[];\r\n  weekdaysMin(date: Date, format?: string, isUTC?: boolean): string;\r\n  weekdaysMin(date?: Date, format?: string, isUTC?: boolean): string | string[] {\r\n    return date ? this._weekdaysMin[getDay(date, isUTC)] : this._weekdaysMin;\r\n  }\r\n\r\n  weekdaysShort(): string[];\r\n  weekdaysShort(date: Date, format?: string, isUTC?: boolean): string;\r\n  weekdaysShort(date?: Date, format?: string, isUTC?: boolean): string | string[] {\r\n    return date ? this._weekdaysShort[getDay(date, isUTC)] : this._weekdaysShort;\r\n  }\r\n\r\n\r\n  // proto.weekdaysParse  =        localeWeekdaysParse;\r\n  weekdaysParse(weekdayName?: string, format?: string, strict?: boolean): number {\r\n    let i;\r\n    let regex;\r\n\r\n    if (this._weekdaysParseExact) {\r\n      return this.handleWeekStrictParse(weekdayName, format, strict);\r\n    }\r\n\r\n    if (!this._weekdaysParse) {\r\n      this._weekdaysParse = [];\r\n      this._minWeekdaysParse = [];\r\n      this._shortWeekdaysParse = [];\r\n      this._fullWeekdaysParse = [];\r\n    }\r\n\r\n    for (i = 0; i < 7; i++) {\r\n      // make the regex if we don't have it already\r\n      // fix: here is the issue\r\n      const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\r\n      if (strict && !this._fullWeekdaysParse[i]) {\r\n        this._fullWeekdaysParse[i] = new RegExp(`^${this.weekdays(date, '', true).replace('.', '\\.?')}$`, 'i');\r\n        this._shortWeekdaysParse[i] = new RegExp(`^${this.weekdaysShort(date, '', true).replace('.', '\\.?')}$`, 'i');\r\n        this._minWeekdaysParse[i] = new RegExp(`^${this.weekdaysMin(date, '', true).replace('.', '\\.?')}$`, 'i');\r\n      }\r\n      if (!this._weekdaysParse[i]) {\r\n        regex = `^${this.weekdays(date, '', true)}|^${this.weekdaysShort(date, '', true)}|^${this.weekdaysMin(date, '', true)}`;\r\n        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\r\n      }\r\n\r\n      if (!isArray<RegExp>(this._fullWeekdaysParse)\r\n        || !isArray<RegExp>(this._shortWeekdaysParse)\r\n        || !isArray<RegExp>(this._minWeekdaysParse)\r\n        || !isArray<RegExp>(this._weekdaysParse)) {\r\n        return;\r\n      }\r\n\r\n      // testing the regex\r\n      if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\r\n        return i;\r\n      } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\r\n        return i;\r\n      } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\r\n        return i;\r\n      } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\r\n        return i;\r\n      }\r\n    }\r\n  }\r\n\r\n  // proto.weekdaysRegex       =        weekdaysRegex;\r\n  weekdaysRegex(isStrict: boolean) {\r\n    if (this._weekdaysParseExact) {\r\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\r\n        this.computeWeekdaysParse();\r\n      }\r\n\r\n      if (isStrict) {\r\n        return this._weekdaysStrictRegex;\r\n      } else {\r\n        return this._weekdaysRegex;\r\n      }\r\n    } else {\r\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\r\n        this._weekdaysRegex = matchWord;\r\n      }\r\n\r\n      return this._weekdaysStrictRegex && isStrict ?\r\n        this._weekdaysStrictRegex : this._weekdaysRegex;\r\n    }\r\n  }\r\n\r\n  // proto.weekdaysShortRegex  =        weekdaysShortRegex;\r\n  // proto.weekdaysMinRegex    =        weekdaysMinRegex;\r\n\r\n\r\n  weekdaysShortRegex(isStrict?: boolean): RegExp {\r\n    if (this._weekdaysParseExact) {\r\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\r\n        this.computeWeekdaysParse();\r\n      }\r\n      if (isStrict) {\r\n        return this._weekdaysShortStrictRegex;\r\n      } else {\r\n        return this._weekdaysShortRegex;\r\n      }\r\n    } else {\r\n      if (!hasOwnProp(this, '_weekdaysShortRegex')) {\r\n        this._weekdaysShortRegex = matchWord;\r\n      }\r\n\r\n      return this._weekdaysShortStrictRegex && isStrict ?\r\n        this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\r\n    }\r\n  }\r\n\r\n  weekdaysMinRegex(isStrict?: boolean): RegExp {\r\n    if (this._weekdaysParseExact) {\r\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\r\n        this.computeWeekdaysParse();\r\n      }\r\n      if (isStrict) {\r\n        return this._weekdaysMinStrictRegex;\r\n      } else {\r\n        return this._weekdaysMinRegex;\r\n      }\r\n    } else {\r\n      if (!hasOwnProp(this, '_weekdaysMinRegex')) {\r\n        this._weekdaysMinRegex = matchWord;\r\n      }\r\n\r\n      return this._weekdaysMinStrictRegex && isStrict ?\r\n        this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\r\n    }\r\n  }\r\n\r\n  isPM(input: string): boolean {\r\n    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\r\n    // Using charAt should be more compatible.\r\n    return input.toLowerCase().charAt(0) === 'p';\r\n  }\r\n\r\n  meridiem(hours: number, minutes: number, isLower: boolean): string {\r\n    if (hours > 11) {\r\n      return isLower ? 'pm' : 'PM';\r\n    }\r\n\r\n    return isLower ? 'am' : 'AM';\r\n  }\r\n\r\n  formatLongDate(key: string) {\r\n    this._longDateFormat = this._longDateFormat ? this._longDateFormat : defaultLongDateFormat;\r\n    const format = this._longDateFormat[key];\r\n    const formatUpper = this._longDateFormat[key.toUpperCase()];\r\n\r\n    if (format || !formatUpper) {\r\n      return format;\r\n    }\r\n\r\n    this._longDateFormat[\r\n      key\r\n      ] = formatUpper.replace(/MMMM|MM|DD|dddd/g, (val: string) => {\r\n      return val.slice(1);\r\n    });\r\n\r\n    return this._longDateFormat[key];\r\n  }\r\n\r\n  private handleMonthStrictParse(monthName: string, format: string, strict?: boolean) {\r\n    const llc = monthName.toLocaleLowerCase();\r\n    let i;\r\n    let ii;\r\n    let mom;\r\n    if (!this._monthsParse) {\r\n      // this is not used\r\n      this._monthsParse = [];\r\n      this._longMonthsParse = [];\r\n      this._shortMonthsParse = [];\r\n      for (i = 0; i < 12; ++i) {\r\n        mom = new Date(2000, i);\r\n        this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\r\n        this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\r\n      }\r\n    }\r\n\r\n    if (strict) {\r\n      if (format === 'MMM') {\r\n        ii = (this._shortMonthsParse as string[]).indexOf(llc);\r\n\r\n        return ii !== -1 ? ii : null;\r\n      }\r\n      ii = (this._longMonthsParse as string[]).indexOf(llc);\r\n\r\n      return ii !== -1 ? ii : null;\r\n    }\r\n\r\n    if (format === 'MMM') {\r\n      ii = (this._shortMonthsParse as string[]).indexOf(llc);\r\n      if (ii !== -1) {\r\n        return ii;\r\n      }\r\n\r\n      ii = (this._longMonthsParse as string[]).indexOf(llc);\r\n\r\n      return ii !== -1 ? ii : null;\r\n    }\r\n\r\n    ii = (this._longMonthsParse as string[]).indexOf(llc);\r\n    if (ii !== -1) {\r\n      return ii;\r\n    }\r\n    ii = (this._shortMonthsParse as string[]).indexOf(llc);\r\n\r\n    return ii !== -1 ? ii : null;\r\n  }\r\n\r\n  private handleWeekStrictParse(weekdayName: string, format: string, strict: boolean): number {\r\n    let ii;\r\n    const llc = weekdayName.toLocaleLowerCase();\r\n    if (!this._weekdaysParse) {\r\n      this._weekdaysParse = [];\r\n      this._shortWeekdaysParse = [];\r\n      this._minWeekdaysParse = [];\r\n\r\n      let i;\r\n      for (i = 0; i < 7; ++i) {\r\n        const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\r\n        this._minWeekdaysParse[i] = this.weekdaysMin(date).toLocaleLowerCase();\r\n        this._shortWeekdaysParse[i] = this.weekdaysShort(date).toLocaleLowerCase();\r\n        this._weekdaysParse[i] = this.weekdays(date, '').toLocaleLowerCase();\r\n      }\r\n    }\r\n\r\n    if (!isArray<string>(this._weekdaysParse)\r\n      || !isArray<string>(this._shortWeekdaysParse)\r\n      || !isArray<string>(this._minWeekdaysParse)) {\r\n      return;\r\n    }\r\n\r\n    if (strict) {\r\n      if (format === 'dddd') {\r\n        ii = this._weekdaysParse.indexOf(llc);\r\n\r\n        return ii !== -1 ? ii : null;\r\n      } else if (format === 'ddd') {\r\n        ii = this._shortWeekdaysParse.indexOf(llc);\r\n\r\n        return ii !== -1 ? ii : null;\r\n      } else {\r\n        ii = this._minWeekdaysParse.indexOf(llc);\r\n\r\n        return ii !== -1 ? ii : null;\r\n      }\r\n    } else {\r\n      if (format === 'dddd') {\r\n        ii = this._weekdaysParse.indexOf(llc);\r\n        if (ii !== -1) {\r\n          return ii;\r\n        }\r\n        ii = this._shortWeekdaysParse.indexOf(llc);\r\n        if (ii !== -1) {\r\n          return ii;\r\n        }\r\n        ii = this._minWeekdaysParse.indexOf(llc);\r\n\r\n        return ii !== -1 ? ii : null;\r\n      } else if (format === 'ddd') {\r\n        ii = this._shortWeekdaysParse.indexOf(llc);\r\n        if (ii !== -1) {\r\n          return ii;\r\n        }\r\n        ii = this._weekdaysParse.indexOf(llc);\r\n        if (ii !== -1) {\r\n          return ii;\r\n        }\r\n        ii = this._minWeekdaysParse.indexOf(llc);\r\n\r\n        return ii !== -1 ? ii : null;\r\n      } else {\r\n        ii = this._minWeekdaysParse.indexOf(llc);\r\n        if (ii !== -1) {\r\n          return ii;\r\n        }\r\n        ii = this._weekdaysParse.indexOf(llc);\r\n        if (ii !== -1) {\r\n          return ii;\r\n        }\r\n        ii = this._shortWeekdaysParse.indexOf(llc);\r\n\r\n        return ii !== -1 ? ii : null;\r\n      }\r\n    }\r\n  }\r\n\r\n  private computeMonthsParse() {\r\n    const shortPieces: string[] = [];\r\n    const longPieces: string[] = [];\r\n    const mixedPieces: string[] = [];\r\n    let date;\r\n\r\n    let i;\r\n    for (i = 0; i < 12; i++) {\r\n      // make the regex if we don't have it already\r\n      date = new Date(2000, i);\r\n      shortPieces.push(this.monthsShort(date, ''));\r\n      longPieces.push(this.months(date, ''));\r\n      mixedPieces.push(this.months(date, ''));\r\n      mixedPieces.push(this.monthsShort(date, ''));\r\n    }\r\n    // Sorting makes sure if one month (or abbr) is a prefix of another it\r\n    // will match the longer piece.\r\n    shortPieces.sort(cmpLenRev);\r\n    longPieces.sort(cmpLenRev);\r\n    mixedPieces.sort(cmpLenRev);\r\n    for (i = 0; i < 12; i++) {\r\n      shortPieces[i] = regexEscape(shortPieces[i]);\r\n      longPieces[i] = regexEscape(longPieces[i]);\r\n    }\r\n    for (i = 0; i < 24; i++) {\r\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\r\n    }\r\n\r\n    this._monthsRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\r\n    this._monthsShortRegex = this._monthsRegex;\r\n    this._monthsStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\r\n    this._monthsShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\r\n  }\r\n\r\n  private computeWeekdaysParse() {\r\n    const minPieces = [];\r\n    const shortPieces = [];\r\n    const longPieces = [];\r\n    const mixedPieces = [];\r\n\r\n    let i;\r\n    for (i = 0; i < 7; i++) {\r\n      // make the regex if we don't have it already\r\n      // let mom = createUTC([2000, 1]).day(i);\r\n      const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\r\n      const minp = this.weekdaysMin(date);\r\n      const shortp = this.weekdaysShort(date);\r\n      const longp = this.weekdays(date);\r\n      minPieces.push(minp);\r\n      shortPieces.push(shortp);\r\n      longPieces.push(longp);\r\n      mixedPieces.push(minp);\r\n      mixedPieces.push(shortp);\r\n      mixedPieces.push(longp);\r\n    }\r\n    // Sorting makes sure if one weekday (or abbr) is a prefix of another it\r\n    // will match the longer piece.\r\n    minPieces.sort(cmpLenRev);\r\n    shortPieces.sort(cmpLenRev);\r\n    longPieces.sort(cmpLenRev);\r\n    mixedPieces.sort(cmpLenRev);\r\n    for (i = 0; i < 7; i++) {\r\n      shortPieces[i] = regexEscape(shortPieces[i]);\r\n      longPieces[i] = regexEscape(longPieces[i]);\r\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\r\n    }\r\n\r\n    this._weekdaysRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\r\n    this._weekdaysShortRegex = this._weekdaysRegex;\r\n    this._weekdaysMinRegex = this._weekdaysRegex;\r\n\r\n    this._weekdaysStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\r\n    this._weekdaysShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\r\n    this._weekdaysMinStrictRegex = new RegExp(`^(${minPieces.join('|')})`, 'i');\r\n  }\r\n}\r\n\r\nfunction cmpLenRev(a: string, b: string): number {\r\n  return b.length - a.length;\r\n}\r\n","export const defaultCalendar = {\r\n  sameDay: '[Today at] LT',\r\n  nextDay: '[Tomorrow at] LT',\r\n  nextWeek: 'dddd [at] LT',\r\n  lastDay: '[Yesterday at] LT',\r\n  lastWeek: '[Last] dddd [at] LT',\r\n  sameElse: 'L'\r\n};\r\n","import {\r\n  defaultDayOfMonthOrdinalParse,\r\n  defaultLocaleMonths,\r\n  defaultLocaleMonthsShort,\r\n  defaultLocaleWeekdays,\r\n  defaultLocaleWeekdaysMin,\r\n  defaultLocaleWeekdaysShort, defaultLongDateFormat, defaultOrdinal,\r\n  LocaleData\r\n} from './locale.class';\r\nimport { defaultCalendar } from './calendar';\r\n\r\nexport const defaultInvalidDate = 'Invalid date';\r\n\r\nexport const defaultLocaleWeek = {\r\n  dow: 0, // Sunday is the first day of the week.\r\n  doy: 6 // The week that contains Jan 1st is the first week of the year.\r\n};\r\n\r\nexport const defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\r\n\r\nexport const defaultRelativeTime: {[key: string]: string} = {\r\n  future : 'in %s',\r\n  past   : '%s ago',\r\n  s  : 'a few seconds',\r\n  ss : '%d seconds',\r\n  m  : 'a minute',\r\n  mm : '%d minutes',\r\n  h  : 'an hour',\r\n  hh : '%d hours',\r\n  d  : 'a day',\r\n  dd : '%d days',\r\n  M  : 'a month',\r\n  MM : '%d months',\r\n  y  : 'a year',\r\n  yy : '%d years'\r\n};\r\n\r\nexport const baseConfig: LocaleData = {\r\n  calendar: defaultCalendar,\r\n  longDateFormat: defaultLongDateFormat,\r\n  invalidDate: defaultInvalidDate,\r\n  ordinal: defaultOrdinal,\r\n  dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\r\n  relativeTime: defaultRelativeTime,\r\n\r\n  months: defaultLocaleMonths,\r\n  monthsShort: defaultLocaleMonthsShort,\r\n\r\n  week: defaultLocaleWeek,\r\n\r\n  weekdays: defaultLocaleWeekdays,\r\n  weekdaysMin: defaultLocaleWeekdaysMin,\r\n  weekdaysShort: defaultLocaleWeekdaysShort,\r\n\r\n  meridiemParse: defaultLocaleMeridiemParse\r\n};\r\n","// compare two arrays, return the number of differences\r\nimport { toInt } from './type-checks';\r\n\r\nexport function compareArrays<T>(array1: T[], array2: T[], dontConvert: boolean) {\r\n  const len = Math.min(array1.length, array2.length);\r\n  const lengthDiff = Math.abs(array1.length - array2.length);\r\n  let diffs = 0;\r\n  let i;\r\n  for (i = 0; i < len; i++) {\r\n    if ((dontConvert && array1[i] !== array2[i])\r\n      || (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\r\n      diffs++;\r\n    }\r\n  }\r\n\r\n  return diffs + lengthDiff;\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { Locale } from '../locale/locale.class';\r\nimport { weekOfYear } from './week-calendar-utils';\r\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\r\nimport { addUnitAlias } from './aliases';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addWeekParseToken } from '../parse/token';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { DateFormatterOptions, WeekParsing } from '../types';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { getLocale } from '../locale/locales';\r\nimport { add } from '../moment/add-subtract';\r\n\r\n// FORMATTING\r\n\r\nexport function initWeek() {\r\n  addFormatToken('w', ['ww', 2, false], 'wo',\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getWeek(date, opts.locale)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n  addFormatToken('W', ['WW', 2, false], 'Wo',\r\n    function(date: Date): string {\r\n      return getISOWeek(date)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('week', 'w');\r\n  addUnitAlias('isoWeek', 'W');\r\n\r\n// PRIORITIES\r\n\r\n  addUnitPriority('week', 5);\r\n  addUnitPriority('isoWeek', 5);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('w', match1to2);\r\n  addRegexToken('ww', match1to2, match2);\r\n  addRegexToken('W', match1to2);\r\n  addRegexToken('WW', match1to2, match2);\r\n\r\n  addWeekParseToken(\r\n    ['w', 'ww', 'W', 'WW'],\r\n    function(input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {\r\n      week[token.substr(0, 1)] = toInt(input);\r\n\r\n      return config;\r\n    }\r\n  );\r\n\r\n// export function getSetWeek (input) {\r\n//   var week = this.localeData().week(this);\r\n//   return input == null ? week : this.add((input - week) * 7, 'd');\r\n// }\r\n}\r\n\r\nexport function setWeek(date: Date, input: number, locale = getLocale()): Date {\r\n  const week = getWeek(date, locale);\r\n\r\n  return add(date, (input - week) * 7, 'day');\r\n}\r\n\r\nexport function getWeek(date: Date, locale = getLocale(), isUTC?: boolean): number {\r\n  return locale.week(date, isUTC);\r\n}\r\n\r\n// export function getSetISOWeek (input) {\r\n//   var week = weekOfYear(this, 1, 4).week;\r\n//   return input == null ? week : this.add((input - week) * 7, 'd');\r\n// }\r\n\r\nexport function setISOWeek(date: Date, input: number): Date {\r\n  const week = getISOWeek(date);\r\n\r\n  return add(date, (input - week) * 7, 'day');\r\n}\r\n\r\nexport function getISOWeek(date: Date, isUTC?: boolean): number {\r\n  return weekOfYear(date, 1, 4, isUTC).week;\r\n}\r\n\r\n","import { addFormatToken } from '../format/format';\r\nimport { addUnitAlias } from './aliases';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\r\nimport { addWeekParseToken } from '../parse/token';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { parseTwoDigitYear } from './year';\r\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from './week-calendar-utils';\r\nimport { createUTCDate } from '../create/date-from-array';\r\nimport { getISOWeek, getWeek } from './week';\r\nimport { getISODayOfWeek, getLocaleDayOfWeek } from './day-of-week';\r\nimport { getLocale } from '../locale/locales';\r\nimport { setDate, setFullYear, setMonth } from '../utils/date-setters';\r\nimport { getDate, getFullYear, getMonth } from '../utils/date-getters';\r\nimport { Locale } from '../locale/locale.class';\r\nimport { DateFormatterFn, DateFormatterOptions, WeekParsing } from '../types';\r\n\r\n// FORMATTING\r\n\r\nexport function initWeekYear() {\r\n  addFormatToken(null, ['gg', 2, false], null,\r\n    function (date: Date, opts: DateFormatterOptions): string {\r\n      // return this.weekYear() % 100;\r\n      return (getWeekYear(date, opts.locale) % 100).toString();\r\n    }\r\n  );\r\n\r\n  addFormatToken(null, ['GG', 2, false], null,\r\n    function (date: Date): string {\r\n      // return this.isoWeekYear() % 100;\r\n      return (getISOWeekYear(date) % 100).toString();\r\n    }\r\n  );\r\n\r\n  addWeekYearFormatToken('gggg', _getWeekYearFormatCb);\r\n  addWeekYearFormatToken('ggggg', _getWeekYearFormatCb);\r\n  addWeekYearFormatToken('GGGG', _getISOWeekYearFormatCb);\r\n  addWeekYearFormatToken('GGGGG', _getISOWeekYearFormatCb);\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('weekYear', 'gg');\r\n  addUnitAlias('isoWeekYear', 'GG');\r\n\r\n// PRIORITY\r\n\r\n  addUnitPriority('weekYear', 1);\r\n  addUnitPriority('isoWeekYear', 1);\r\n\r\n\r\n// PARSING\r\n\r\n  addRegexToken('G', matchSigned);\r\n  addRegexToken('g', matchSigned);\r\n  addRegexToken('GG', match1to2, match2);\r\n  addRegexToken('gg', match1to2, match2);\r\n  addRegexToken('GGGG', match1to4, match4);\r\n  addRegexToken('gggg', match1to4, match4);\r\n  addRegexToken('GGGGG', match1to6, match6);\r\n  addRegexToken('ggggg', match1to6, match6);\r\n\r\n  addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'],\r\n    function (input, week: WeekParsing, config, token) {\r\n      week[token.substr(0, 2)] = toInt(input);\r\n\r\n      return config;\r\n    });\r\n\r\n  addWeekParseToken(['gg', 'GG'], function (input, week: WeekParsing, config, token) {\r\n    week[token] = parseTwoDigitYear(input);\r\n\r\n    return config;\r\n  });\r\n}\r\n\r\nfunction addWeekYearFormatToken(token: string, getter: DateFormatterFn): void {\r\n  addFormatToken(null, [token, token.length, false], null, getter);\r\n}\r\n\r\nfunction _getWeekYearFormatCb(date: Date, opts: DateFormatterOptions): string {\r\n  return getWeekYear(date, opts.locale).toString();\r\n}\r\n\r\nfunction _getISOWeekYearFormatCb(date: Date): string {\r\n  return getISOWeekYear(date).toString();\r\n}\r\n\r\n// MOMENTS\r\n\r\nexport function getSetWeekYear(date: Date, input: number, locale = getLocale(), isUTC?: boolean): number | Date {\r\n  return getSetWeekYearHelper(date,\r\n    input,\r\n    // this.week(),\r\n    getWeek(date, locale, isUTC),\r\n    // this.weekday(),\r\n    getLocaleDayOfWeek(date, locale, isUTC),\r\n    locale.firstDayOfWeek(),\r\n    locale.firstDayOfYear(),\r\n    isUTC);\r\n}\r\n\r\nexport function getWeekYear(date: Date, locale = getLocale(), isUTC?: boolean): number {\r\n  return weekOfYear(date, locale.firstDayOfWeek(), locale.firstDayOfYear(), isUTC).year;\r\n}\r\n\r\nexport function getSetISOWeekYear(date: Date, input: number, isUTC?: boolean): number | Date {\r\n  return getSetWeekYearHelper(date, input, getISOWeek(date, isUTC), getISODayOfWeek(date, isUTC), 1, 4);\r\n}\r\n\r\nexport function getISOWeekYear(date: Date, isUTC?: boolean): number {\r\n  return weekOfYear(date, 1, 4, isUTC).year;\r\n}\r\n\r\nexport function getISOWeeksInYear(date: Date, isUTC?: boolean) {\r\n  return weeksInYear(getFullYear(date, isUTC), 1, 4);\r\n}\r\n\r\nexport function getWeeksInYear(date: Date, isUTC?: boolean, locale: Locale = getLocale()): number {\r\n  return weeksInYear(getFullYear(date, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear());\r\n}\r\n\r\nfunction getSetWeekYearHelper(date: Date, input: number, week: number,\r\n                              weekday: number, dow: number, doy: number, isUTC?: boolean): number | Date {\r\n  if (!input) {\r\n    return getWeekYear(date, void 0, isUTC);\r\n  }\r\n\r\n  const weeksTarget = weeksInYear(input, dow, doy);\r\n  const _week = week > weeksTarget ? weeksTarget : week;\r\n\r\n  return setWeekAll(date, input, _week, weekday, dow, doy);\r\n}\r\n\r\nfunction setWeekAll(date: Date, weekYear: number, week: number,\r\n                    weekday: number, dow: number, doy: number): Date {\r\n  const dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\r\n  const _date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\r\n  setFullYear(date, getFullYear(_date, true), true);\r\n  setMonth(date, getMonth(_date, true), true);\r\n  setDate(date, getDate(_date, true), true);\r\n\r\n  return date;\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { DateFormatterOptions } from '../types';\r\n\r\n// todo: add support for timezones\r\n\r\nexport function initTimezone() {\r\n  // FORMATTING\r\n  addFormatToken('z', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return opts.isUTC ? 'UTC' : '';\r\n    }\r\n  );\r\n  addFormatToken('zz', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return opts.isUTC ? 'Coordinated Universal Time' : '';\r\n    }\r\n  );\r\n}\r\n\r\n// MOMENTS\r\n\r\nexport function getZoneAbbr(isUTC: boolean) {\r\n  return isUTC ? 'UTC' : '';\r\n}\r\n\r\nexport function getZoneName(isUTC: boolean) {\r\n  return isUTC ? 'Coordinated Universal Time' : '';\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { unix } from '../utils/date-getters';\r\nimport { addRegexToken, matchSigned, matchTimestamp } from '../parse/regex';\r\nimport { addParseToken} from '../parse/token';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { DateArray } from '../types';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\n\r\n\r\nexport function initTimestamp() {\r\n// FORMATTING\r\n\r\n  addFormatToken('X', null, null, function(date: Date): string {\r\n    return unix(date)\r\n      .toString(10);\r\n  });\r\n  addFormatToken('x', null, null, function(date: Date): string {\r\n    return date.valueOf()\r\n      .toString(10);\r\n  });\r\n\r\n// PARSING\r\n\r\n  addRegexToken('x', matchSigned);\r\n  addRegexToken('X', matchTimestamp);\r\n\r\n  addParseToken('X', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    config._d = new Date(parseFloat(input) * 1000);\r\n\r\n    return config;\r\n  });\r\n  addParseToken('x', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    config._d = new Date(toInt(input));\r\n\r\n    return config;\r\n  });\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { getSeconds } from '../utils/date-getters';\r\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { SECOND } from './constants';\r\nimport { addUnitAlias } from './aliases';\r\nimport { addUnitPriority } from './priorities';\r\nimport { DateFormatterOptions } from '../types';\r\n\r\n\r\nexport function initSecond() {\r\n// FORMATTING\r\n\r\n  addFormatToken('s', ['ss', 2, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getSeconds(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('second', 's');\r\n\r\n// PRIORITY\r\n\r\n  addUnitPriority('second', 15);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('s', match1to2);\r\n  addRegexToken('ss', match1to2, match2);\r\n  addParseToken(['s', 'ss'], SECOND);\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { addRegexToken, match1 } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { MONTH } from './constants';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { getMonth } from '../utils/date-getters';\r\nimport { DateArray, DateFormatterOptions } from '../types';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addUnitAlias } from './aliases';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { setMonth } from '../utils/date-setters';\r\n\r\n\r\nexport function initQuarter() {\r\n// FORMATTING\r\n\r\n  addFormatToken('Q', null, 'Qo',\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getQuarter(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('quarter', 'Q');\r\n\r\n// PRIORITY\r\n\r\n  addUnitPriority('quarter', 7);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('Q', match1);\r\n  addParseToken('Q', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    array[MONTH] = (toInt(input) - 1) * 3;\r\n\r\n    return config;\r\n  });\r\n}\r\n\r\n// MOMENTS\r\n\r\nexport function getQuarter(date: Date, isUTC = false): number {\r\n  return Math.ceil((getMonth(date, isUTC) + 1) / 3);\r\n}\r\n\r\nexport function setQuarter(date: Date, quarter: number, isUTC?: boolean): Date {\r\n  return setMonth(date, (quarter - 1) * 3 + getMonth(date, isUTC) % 3, isUTC);\r\n}\r\n\r\n// export function getSetQuarter(input) {\r\n//   return input == null\r\n//     ? Math.ceil((this.month() + 1) / 3)\r\n//     : this.month((input - 1) * 3 + this.month() % 3);\r\n// }\r\n","// FORMATTING\r\n\r\nimport { addFormatToken } from '../format/format';\r\nimport { zeroFill } from '../utils/zero-fill';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { isNumber, isString, toInt } from '../utils/type-checks';\r\nimport { addRegexToken, matchOffset, matchShortOffset } from '../parse/regex';\r\nimport { add } from '../moment/add-subtract';\r\nimport { addParseToken } from '../parse/token';\r\nimport { DateArray } from '../types';\r\nimport { cloneDate } from '../create/clone';\r\nimport { setMonth } from '../utils/date-setters';\r\n\r\nfunction addOffsetFormatToken(token: string, separator: string): void {\r\n  addFormatToken(token, null, null, function (date: Date, config): string {\r\n    let offset = getUTCOffset(date, {_isUTC: config.isUTC, _offset: config.offset});\r\n    let sign = '+';\r\n    if (offset < 0) {\r\n      offset = -offset;\r\n      sign = '-';\r\n    }\r\n\r\n    return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\r\n  });\r\n}\r\n\r\nexport function initOffset() {\r\n  addOffsetFormatToken('Z', ':');\r\n  addOffsetFormatToken('ZZ', '');\r\n\r\n// PARSING\r\n\r\n  addRegexToken('Z', matchShortOffset);\r\n  addRegexToken('ZZ', matchShortOffset);\r\n  addParseToken(['Z', 'ZZ'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    config._useUTC = true;\r\n    config._tzm = offsetFromString(matchShortOffset, input);\r\n\r\n    return config;\r\n  });\r\n}\r\n\r\n// HELPERS\r\n\r\n// timezone chunker\r\n// '+10:00' > ['10',  '00']\r\n// '-1530'  > ['-15', '30']\r\nconst chunkOffset = /([\\+\\-]|\\d\\d)/gi;\r\n\r\nfunction offsetFromString(matcher: RegExp, str: string): number {\r\n  const matches = (str || '').match(matcher);\r\n\r\n  if (matches === null) {\r\n    return null;\r\n  }\r\n\r\n  const chunk = matches[matches.length - 1];\r\n  const parts = chunk.match(chunkOffset) || ['-', '0', '0'];\r\n  const minutes = parseInt(parts[1], 10) * 60 + toInt(parts[2]);\r\n  const _min = parts[0] === '+' ? minutes : -minutes;\r\n\r\n  return minutes === 0 ? 0 : _min;\r\n}\r\n\r\n// Return a moment from input, that is local/utc/zone equivalent to model.\r\nexport function cloneWithOffset(input: Date, date: Date,\r\n                                config: DateParsingConfig = {}): Date {\r\n  if (!config._isUTC) {\r\n    return input;\r\n  }\r\n\r\n  const res = cloneDate(date);\r\n  // todo: input._d - res._d + ((res._offset || 0) - (input._offset || 0))*60000\r\n  const offsetDiff = (config._offset || 0) * 60000;\r\n  const diff = input.valueOf() - res.valueOf() + offsetDiff;\r\n  // Use low-level api, because this fn is low-level api.\r\n  res.setTime(res.valueOf() + diff);\r\n  // todo: add timezone handling\r\n  // hooks.updateOffset(res, false);\r\n\r\n  return res;\r\n}\r\n\r\nexport function getDateOffset(date: Date): number {\r\n  // On Firefox.24 Date#getTimezoneOffset returns a floating point.\r\n  // https://github.com/moment/moment/pull/1871\r\n  return -Math.round(date.getTimezoneOffset() / 15) * 15;\r\n}\r\n\r\n// HOOKS\r\n\r\n// This function will be called whenever a moment is mutated.\r\n// It is intended to keep the offset in sync with the timezone.\r\n// todo: it's from moment timezones\r\n// hooks.updateOffset = function () {\r\n// };\r\n\r\n// MOMENTS\r\n\r\n// keepLocalTime = true means only change the timezone, without\r\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\r\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\r\n// +0200, so we adjust the time as needed, to be valid.\r\n//\r\n// Keeping the time actually adds/subtracts (one hour)\r\n// from the actual represented time. That is why we call updateOffset\r\n// a second time. In case it wants us to change the offset again\r\n// _changeInProgress == true case, then we have to adjust, because\r\n// there is no such time in the given timezone.\r\nexport function getUTCOffset(date: Date, config: DateParsingConfig = {}): number {\r\n  const _offset = config._offset || 0;\r\n\r\n  return config._isUTC ? _offset : getDateOffset(date);\r\n}\r\n\r\nexport function setUTCOffset(date: Date, input: number | string, keepLocalTime?: boolean, keepMinutes?: boolean, config: DateParsingConfig = {}): Date {\r\n  const offset = config._offset || 0;\r\n  let localAdjust;\r\n  let _input = input;\r\n  let _date = date;\r\n\r\n  if (isString(_input)) {\r\n    _input = offsetFromString(matchShortOffset, _input);\r\n    if (_input === null) {\r\n      return _date;\r\n    }\r\n  } else if (isNumber(_input) && Math.abs(_input) < 16 && !keepMinutes) {\r\n    _input = _input * 60;\r\n  }\r\n\r\n  if (!config._isUTC && keepLocalTime) {\r\n    localAdjust = getDateOffset(_date);\r\n  }\r\n  config._offset = _input;\r\n  config._isUTC = true;\r\n  if (localAdjust != null) {\r\n    _date = add(_date, localAdjust, 'minutes');\r\n  }\r\n  if (offset !== _input) {\r\n    if (!keepLocalTime || config._changeInProgress) {\r\n      _date = add(_date, _input - offset, 'minutes', config._isUTC);\r\n      // addSubtract(this, createDuration(_input - offset, 'm'), 1, false);\r\n    } else if (!config._changeInProgress) {\r\n      config._changeInProgress = true;\r\n      // todo: add timezone handling\r\n      // hooks.updateOffset(this, true);\r\n      config._changeInProgress = null;\r\n    }\r\n  }\r\n\r\n  return _date;\r\n}\r\n\r\n/*\r\nexport function getSetZone(input, keepLocalTime) {\r\n  if (input != null) {\r\n    if (typeof input !== 'string') {\r\n      input = -input;\r\n    }\r\n\r\n    this.utcOffset(input, keepLocalTime);\r\n\r\n    return this;\r\n  } else {\r\n    return -this.utcOffset();\r\n  }\r\n}\r\n*/\r\n\r\nexport function setOffsetToUTC(date: Date, keepLocalTime?: boolean): Date {\r\n  return setUTCOffset(date, 0, keepLocalTime);\r\n}\r\n\r\nexport function isDaylightSavingTime(date: Date): boolean {\r\n\r\n  return (getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 0))\r\n    || getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 5)));\r\n}\r\n\r\n/*export function setOffsetToLocal(date: Date, isUTC?: boolean, keepLocalTime?: boolean) {\r\n  if (this._isUTC) {\r\n    this.utcOffset(0, keepLocalTime);\r\n    this._isUTC = false;\r\n\r\n    if (keepLocalTime) {\r\n      this.subtract(getDateOffset(this), 'm');\r\n    }\r\n  }\r\n  return this;\r\n}*/\r\n\r\nexport function setOffsetToParsedOffset(date: Date, input: string, config: DateParsingConfig = {}): Date {\r\n  if (config._tzm != null) {\r\n    return setUTCOffset(date, config._tzm, false, true, config);\r\n  }\r\n\r\n  if (isString(input)) {\r\n    const tZone = offsetFromString(matchOffset, input);\r\n    if (tZone != null) {\r\n      return setUTCOffset(date, tZone, false, false, config);\r\n    }\r\n\r\n    return setUTCOffset(date, 0, true, false, config);\r\n  }\r\n\r\n  return date;\r\n}\r\n\r\nexport function hasAlignedHourOffset(date: Date, input?: Date) {\r\n  const _input = input ? getUTCOffset(input, { _isUTC: false }) : 0;\r\n\r\n  return (getUTCOffset(date) - _input) % 60 === 0;\r\n}\r\n\r\n\r\n// DEPRECATED\r\n/*export function isDaylightSavingTimeShifted() {\r\n  if (!isUndefined(this._isDSTShifted)) {\r\n    return this._isDSTShifted;\r\n  }\r\n\r\n  const c = {};\r\n\r\n  copyConfig(c, this);\r\n  c = prepareConfig(c);\r\n\r\n  if (c._a) {\r\n    const other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\r\n    this._isDSTShifted = this.isValid() &&\r\n      compareArrays(c._a, other.toArray()) > 0;\r\n  } else {\r\n    this._isDSTShifted = false;\r\n  }\r\n\r\n  return this._isDSTShifted;\r\n}*/\r\n\r\n// in Khronos\r\n/*export function isLocal() {\r\n  return this.isValid() ? !this._isUTC : false;\r\n}\r\n\r\nexport function isUtcOffset() {\r\n  return this.isValid() ? this._isUTC : false;\r\n}\r\n\r\nexport function isUtc() {\r\n  return this.isValid() ? this._isUTC && this._offset === 0 : false;\r\n}*/\r\n","import { addFormatToken } from '../format/format';\r\nimport { getMinutes } from '../utils/date-getters';\r\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { MINUTE } from './constants';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addUnitAlias } from './aliases';\r\nimport { DateFormatterOptions } from '../types';\r\n\r\n\r\nexport function initMinute() {\r\n// FORMATTING\r\n\r\n  addFormatToken('m', ['mm', 2, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getMinutes(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('minute', 'm');\r\n\r\n// PRIORITY\r\n\r\n  addUnitPriority('minute', 14);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('m', match1to2);\r\n  addRegexToken('mm', match1to2, match2);\r\n  addParseToken(['m', 'mm'], MINUTE);\r\n}\r\n","// FORMATTING\r\n\r\nimport { addFormatToken } from '../format/format';\r\nimport { addRegexToken, match1, match1to3, match2, match3, matchUnsigned } from '../parse/regex';\r\nimport { MILLISECOND } from './constants';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { addParseToken } from '../parse/token';\r\nimport { DateArray, DateFormatterOptions, WeekParsing } from '../types';\r\nimport { addUnitAlias } from './aliases';\r\nimport { addUnitPriority } from './priorities';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { getMilliseconds } from '../utils/date-getters';\r\n\r\n\r\nexport function initMillisecond() {\r\n  addFormatToken('S', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (~~(getMilliseconds(date, opts.isUTC) / 100)).toString(10);\r\n    }\r\n  );\r\n\r\n  addFormatToken(null, ['SS', 2, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (~~(getMilliseconds(date, opts.isUTC) / 10)).toString(10);\r\n    }\r\n  );\r\n\r\n  addFormatToken(null, ['SSS', 3, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMilliseconds(date, opts.isUTC)).toString(10);\r\n    }\r\n  );\r\n  addFormatToken(null, ['SSSS', 4, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMilliseconds(date, opts.isUTC) * 10).toString(10);\r\n    }\r\n  );\r\n  addFormatToken(null, ['SSSSS', 5, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMilliseconds(date, opts.isUTC) * 100).toString(10);\r\n    }\r\n  );\r\n  addFormatToken(null, ['SSSSSS', 6, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMilliseconds(date, opts.isUTC) * 1000).toString(10);\r\n    }\r\n  );\r\n  addFormatToken(null, ['SSSSSSS', 7, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMilliseconds(date, opts.isUTC) * 10000).toString(10);\r\n    }\r\n  );\r\n  addFormatToken(null, ['SSSSSSSS', 8, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMilliseconds(date, opts.isUTC) * 100000).toString(10);\r\n    }\r\n  );\r\n  addFormatToken(null, ['SSSSSSSSS', 9, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return (getMilliseconds(date, opts.isUTC) * 1000000).toString(10);\r\n    }\r\n  );\r\n\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('millisecond', 'ms');\r\n\r\n// PRIORITY\r\n\r\n  addUnitPriority('millisecond', 16);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('S', match1to3, match1);\r\n  addRegexToken('SS', match1to3, match2);\r\n  addRegexToken('SSS', match1to3, match3);\r\n\r\n  let token;\r\n  for (token = 'SSSS'; token.length <= 9; token += 'S') {\r\n    addRegexToken(token, matchUnsigned);\r\n  }\r\n\r\n  function parseMs(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    array[MILLISECOND] = toInt(parseFloat(`0.${input}`) * 1000);\r\n\r\n    return config;\r\n  }\r\n\r\n  for (token = 'S'; token.length <= 9; token += 'S') {\r\n    addParseToken(token, parseMs);\r\n  }\r\n// MOMENTS\r\n}\r\n","import { getHours, getMinutes, getSeconds } from '../utils/date-getters';\r\nimport { addFormatToken } from '../format/format';\r\nimport { zeroFill } from '../utils/zero-fill';\r\nimport { Locale } from '../locale/locale.class';\r\nimport { addRegexToken, match1to2, match2, match3to4, match5to6 } from '../parse/regex';\r\nimport { addParseToken } from '../parse/token';\r\nimport { HOUR, MINUTE, SECOND } from './constants';\r\nimport { toInt } from '../utils/type-checks';\r\nimport { DateArray, DateFormatterOptions } from '../types';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { getParsingFlags } from '../create/parsing-flags';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addUnitAlias } from './aliases';\r\n\r\n\r\nexport function initHour() {\r\n// FORMATTING\r\n\r\n  function hFormat(date: Date, isUTC: boolean): number {\r\n    return getHours(date, isUTC) % 12 || 12;\r\n  }\r\n\r\n  function kFormat(date: Date, isUTC: boolean): number {\r\n    return getHours(date, isUTC) || 24;\r\n  }\r\n\r\n  addFormatToken('H', ['HH', 2, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getHours(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n  addFormatToken('h', ['hh', 2, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return hFormat(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n  addFormatToken('k', ['kk', 2, false], null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return kFormat(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n  addFormatToken('hmm', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      const _h = hFormat(date, opts.isUTC);\r\n      const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\r\n\r\n      return `${_h}${_mm}`;\r\n    }\r\n  );\r\n\r\n  addFormatToken('hmmss', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      const _h = hFormat(date, opts.isUTC);\r\n      const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\r\n      const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\r\n\r\n      return `${_h}${_mm}${_ss}`;\r\n    }\r\n  );\r\n\r\n  addFormatToken('Hmm', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      const _H = getHours(date, opts.isUTC);\r\n      const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\r\n\r\n      return `${_H}${_mm}`;\r\n    }\r\n  );\r\n\r\n  addFormatToken('Hmmss', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      const _H = getHours(date, opts.isUTC);\r\n      const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\r\n      const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\r\n\r\n      return `${_H}${_mm}${_ss}`;\r\n    }\r\n  );\r\n\r\n  function meridiem(token: string, lowercase: boolean): void {\r\n    addFormatToken(token, null, null,\r\n      function(date: Date, opts: DateFormatterOptions): string {\r\n        return opts.locale.meridiem(getHours(date, opts.isUTC), getMinutes(date, opts.isUTC), lowercase);\r\n      }\r\n    );\r\n  }\r\n\r\n  meridiem('a', true);\r\n  meridiem('A', false);\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('hour', 'h');\r\n\r\n// PRIORITY\r\n  addUnitPriority('hour', 13);\r\n\r\n\r\n// PARSING\r\n\r\n  function matchMeridiem(isStrict: boolean, locale: Locale): RegExp {\r\n    return locale._meridiemParse;\r\n  }\r\n\r\n  addRegexToken('a', matchMeridiem);\r\n  addRegexToken('A', matchMeridiem);\r\n  addRegexToken('H', match1to2);\r\n  addRegexToken('h', match1to2);\r\n  addRegexToken('k', match1to2);\r\n  addRegexToken('HH', match1to2, match2);\r\n  addRegexToken('hh', match1to2, match2);\r\n  addRegexToken('kk', match1to2, match2);\r\n\r\n  addRegexToken('hmm', match3to4);\r\n  addRegexToken('hmmss', match5to6);\r\n  addRegexToken('Hmm', match3to4);\r\n  addRegexToken('Hmmss', match5to6);\r\n\r\n  addParseToken(['H', 'HH'], HOUR);\r\n  addParseToken(\r\n    ['k', 'kk'],\r\n    function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n      const kInput = toInt(input);\r\n      array[HOUR] = kInput === 24 ? 0 : kInput;\r\n\r\n      return config;\r\n    }\r\n  );\r\n  addParseToken(['a', 'A'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    config._isPm = config._locale.isPM(input);\r\n    config._meridiem = input;\r\n\r\n    return config;\r\n  });\r\n  addParseToken(['h', 'hh'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    array[HOUR] = toInt(input);\r\n    getParsingFlags(config).bigHour = true;\r\n\r\n    return config;\r\n  });\r\n  addParseToken('hmm', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    const pos = input.length - 2;\r\n    array[HOUR] = toInt(input.substr(0, pos));\r\n    array[MINUTE] = toInt(input.substr(pos));\r\n    getParsingFlags(config).bigHour = true;\r\n\r\n    return config;\r\n  });\r\n  addParseToken('hmmss', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    const pos1 = input.length - 4;\r\n    const pos2 = input.length - 2;\r\n    array[HOUR] = toInt(input.substr(0, pos1));\r\n    array[MINUTE] = toInt(input.substr(pos1, 2));\r\n    array[SECOND] = toInt(input.substr(pos2));\r\n    getParsingFlags(config).bigHour = true;\r\n\r\n    return config;\r\n  });\r\n  addParseToken('Hmm', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    const pos = input.length - 2;\r\n    array[HOUR] = toInt(input.substr(0, pos));\r\n    array[MINUTE] = toInt(input.substr(pos));\r\n\r\n    return config;\r\n  });\r\n  addParseToken('Hmmss', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\r\n    const pos1 = input.length - 4;\r\n    const pos2 = input.length - 2;\r\n    array[HOUR] = toInt(input.substr(0, pos1));\r\n    array[MINUTE] = toInt(input.substr(pos1, 2));\r\n    array[SECOND] = toInt(input.substr(pos2));\r\n\r\n    return config;\r\n  });\r\n\r\n}\r\n","// internal storage for locale config files\r\nimport { Locale, LocaleData } from './locale.class';\r\nimport { baseConfig } from './locale.defaults';\r\nimport { hasOwnProp, isArray, isObject, isString, isUndefined, toInt } from '../utils/type-checks';\r\nimport { compareArrays } from '../utils/compare-arrays';\r\n\r\nimport { initWeek } from '../units/week';\r\nimport { initWeekYear } from '../units/week-year';\r\nimport { initYear } from '../units/year';\r\nimport { initTimezone } from '../units/timezone';\r\nimport { initTimestamp } from '../units/timestamp';\r\nimport { initSecond } from '../units/second';\r\nimport { initQuarter } from '../units/quarter';\r\nimport { initOffset } from '../units/offset';\r\nimport { initMinute } from '../units/minute';\r\nimport { initMillisecond } from '../units/millisecond';\r\nimport { initMonth } from '../units/month';\r\nimport { initHour } from '../units/hour';\r\nimport { initDayOfYear } from '../units/day-of-year';\r\nimport { initDayOfWeek } from '../units/day-of-week';\r\nimport { initDayOfMonth } from '../units/day-of-month';\r\n\r\nconst locales: { [key: string]: Locale } = {};\r\nconst localeFamilies: { [key: string]: {name: string; config: LocaleData}[] } = {};\r\nlet globalLocale: Locale;\r\n\r\nfunction normalizeLocale(key: string): string {\r\n  return key ? key.toLowerCase().replace('_', '-') : key;\r\n}\r\n\r\n// pick the locale from the array\r\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\r\n// substring from most specific to least,\r\n// but move to the next array item if it's a more specific variant than the current root\r\nfunction chooseLocale(names: string[]): Locale {\r\n  let next;\r\n  let locale;\r\n  let i = 0;\r\n\r\n  while (i < names.length) {\r\n    const split = normalizeLocale(names[i]).split('-');\r\n    let j = split.length;\r\n    next = normalizeLocale(names[i + 1]);\r\n    next = next ? next.split('-') : null;\r\n    while (j > 0) {\r\n      locale = loadLocale(split.slice(0, j).join('-'));\r\n      if (locale) {\r\n        return locale;\r\n      }\r\n      if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\r\n        // the next array item is better than a shallower substring of this one\r\n        break;\r\n      }\r\n      j--;\r\n    }\r\n    i++;\r\n  }\r\n\r\n  return null;\r\n}\r\n\r\nexport function mergeConfigs(parentConfig: LocaleData,\r\n                             childConfig: LocaleData) {\r\n  const res: LocaleData = Object.assign({}, parentConfig);\r\n\r\n  for (const childProp in childConfig) {\r\n    if (!hasOwnProp(childConfig, childProp)) {\r\n      continue;\r\n    }\r\n\r\n    if (isObject(parentConfig[childProp]) && isObject(childConfig[childProp])) {\r\n      res[childProp as any] = {};\r\n      Object.assign(res[childProp], parentConfig[childProp]);\r\n      Object.assign(res[childProp], childConfig[childProp]);\r\n    } else if (childConfig[childProp] != null) {\r\n      res[childProp as any] = childConfig[childProp];\r\n    } else {\r\n      delete res[childProp as any];\r\n    }\r\n  }\r\n  for (const parentProp in parentConfig) {\r\n    if (\r\n      hasOwnProp(parentConfig, parentProp) &&\r\n      !hasOwnProp(childConfig, parentProp) &&\r\n      isObject(parentConfig[parentProp as keyof LocaleData])\r\n    ) {\r\n      // make sure changes to properties don't modify parent config\r\n      res[parentProp as any] = Object.assign({}, res[parentProp as keyof LocaleData]);\r\n    }\r\n  }\r\n\r\n  return res;\r\n}\r\n\r\n\r\nfunction loadLocale(name: string): Locale {\r\n  // no way!\r\n  /* var oldLocale = null;\r\n   // TODO: Find a better way to register and load all the locales in Node\r\n   if (!locales[name] && (typeof module !== 'undefined') &&\r\n     module && module.exports) {\r\n     try {\r\n       oldLocale = globalLocale._abbr;\r\n       var aliasedRequire = require;\r\n       aliasedRequire('./locale/' + name);\r\n       getSetGlobalLocale(oldLocale);\r\n     } catch (e) {}\r\n   }*/\r\n  if (!locales[name]) {\r\n    console.error(`Khronos locale error: please load locale \"${name}\" before using it`);\r\n    // throw new Error(`Khronos locale error: please load locale \"${name}\" before using it`);\r\n  }\r\n\r\n  return locales[name];\r\n}\r\n\r\n// This function will load locale and then set the global locale.  If\r\n// no arguments are passed in, it will simply return the current global\r\n// locale key.\r\nexport function getSetGlobalLocale(key?: string | string[], values?: LocaleData): string {\r\n  let data: Locale;\r\n\r\n  if (key) {\r\n    if (isUndefined(values)) {\r\n      data = getLocale(key);\r\n    } else if (isString(key)) {\r\n      data = defineLocale(key, values);\r\n    }\r\n\r\n    if (data) {\r\n      globalLocale = data;\r\n    }\r\n  }\r\n\r\n  return globalLocale && globalLocale._abbr;\r\n}\r\n\r\nexport function defineLocale(name: string, config?: LocaleData): Locale {\r\n  if (config === null) {\r\n    // useful for testing\r\n    delete locales[name];\r\n    globalLocale = getLocale('en');\r\n\r\n    return null;\r\n  }\r\n\r\n  if (!config) {\r\n    return;\r\n  }\r\n\r\n  let parentConfig = baseConfig;\r\n  config.abbr = name;\r\n  if (config.parentLocale != null) {\r\n    if (locales[config.parentLocale] != null) {\r\n      parentConfig = locales[config.parentLocale]._config;\r\n    } else {\r\n      if (!localeFamilies[config.parentLocale]) {\r\n        localeFamilies[config.parentLocale] = [];\r\n      }\r\n      localeFamilies[config.parentLocale].push({ name, config });\r\n\r\n      return null;\r\n    }\r\n  }\r\n\r\n  locales[name] = new Locale(mergeConfigs(parentConfig, config));\r\n\r\n  if (localeFamilies[name]) {\r\n    localeFamilies[name].forEach(function (x) {\r\n      defineLocale(x.name, x.config);\r\n    });\r\n  }\r\n\r\n  // backwards compat for now: also set the locale\r\n  // make sure we set the locale AFTER all child locales have been\r\n  // created, so we won't end up with the child locale set.\r\n  getSetGlobalLocale(name);\r\n\r\n\r\n  return locales[name];\r\n}\r\n\r\nexport function updateLocale(name: string, config?: LocaleData): Locale {\r\n  let _config = config;\r\n\r\n  if (_config != null) {\r\n    let parentConfig = baseConfig;\r\n    // MERGE\r\n    const tmpLocale = loadLocale(name);\r\n    if (tmpLocale != null) {\r\n      parentConfig = tmpLocale._config;\r\n    }\r\n    _config = mergeConfigs(parentConfig, _config);\r\n    const locale = new Locale(_config);\r\n    locale.parentLocale = locales[name];\r\n    locales[name] = locale;\r\n\r\n    // backwards compat for now: also set the locale\r\n    getSetGlobalLocale(name);\r\n  } else {\r\n    // pass null for config to unupdate, useful for tests\r\n    if (locales[name] != null) {\r\n      if (locales[name].parentLocale != null) {\r\n        locales[name] = locales[name].parentLocale;\r\n      } else if (locales[name] != null) {\r\n        delete locales[name];\r\n      }\r\n    }\r\n  }\r\n\r\n  return locales[name];\r\n}\r\n\r\n// returns locale data\r\nexport function getLocale(key?: string | string[]): Locale {\r\n  setDefaultLocale();\r\n\r\n  if (!key) {\r\n    return globalLocale;\r\n  }\r\n  // let locale;\r\n  const _key = isArray(key) ? key : [key];\r\n\r\n  return chooseLocale(_key);\r\n}\r\n\r\nexport function listLocales(): string[] {\r\n  return Object.keys(locales);\r\n}\r\n\r\nfunction setDefaultLocale(): void {\r\n  if (locales[`en`]) {\r\n\r\n    return undefined;\r\n  }\r\n\r\n  getSetGlobalLocale('en', {\r\n    dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\r\n    ordinal(num: number): string {\r\n      const b = num % 10;\r\n      const output =\r\n        toInt((num % 100) / 10) === 1\r\n          ? 'th'\r\n          : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\r\n\r\n      return num + output;\r\n    }\r\n  });\r\n\r\n  initWeek();\r\n  initWeekYear();\r\n  initYear();\r\n  initTimezone();\r\n  initTimestamp();\r\n  initSecond();\r\n  initQuarter();\r\n  initOffset();\r\n  initMonth();\r\n  initMinute();\r\n  initMillisecond();\r\n  initHour();\r\n  initDayOfYear();\r\n  initDayOfWeek();\r\n  initDayOfMonth();\r\n}\r\n","import { toInt } from '../utils/type-checks';\r\nimport { createDuration } from './create';\r\nimport { Duration } from './constructor';\r\nimport { DateObject } from '../types';\r\n\r\nconst ordering: (keyof DateObject)[] = ['year', 'quarter', 'month', 'week', 'day', 'hours', 'minutes', 'seconds', 'milliseconds'];\r\nconst orderingHash = ordering.reduce((mem: { [key: string]: boolean }, order) => {\r\n  mem[order] = true;\r\n\r\n  return mem;\r\n}, {});\r\n\r\nexport function isDurationValid(duration: Partial<DateObject>): boolean {\r\n  const durationKeys = Object.keys(duration);\r\n  if (durationKeys\r\n      .some((key: keyof DateObject) => {\r\n        return (key in orderingHash)\r\n          && duration[key] === null\r\n          || isNaN(duration[key]);\r\n      })) {\r\n    return false;\r\n  }\r\n  // for (let key in duration) {\r\n  //   if (!(indexOf.call(ordering, key) !== -1 && (duration[key] == null || !isNaN(duration[key])))) {\r\n  //     return false;\r\n  //   }\r\n  // }\r\n\r\n  let unitHasDecimal = false;\r\n  for (let i = 0; i < ordering.length; ++i) {\r\n    if (duration[ordering[i]]) {\r\n      // only allow non-integers for smallest unit\r\n      if (unitHasDecimal) {\r\n        return false;\r\n      }\r\n      if (duration[ordering[i]] !== toInt(duration[ordering[i]])) {\r\n        unitHasDecimal = true;\r\n      }\r\n    }\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\n// export function isValid() {\r\n//   return this._isValid;\r\n// }\r\n//\r\n// export function createInvalid(): Duration {\r\n//   return createDuration(NaN);\r\n// }\r\n","export function absCeil (number: number): number {\r\n  return number < 0 ? Math.floor(number) : Math.ceil(number);\r\n}\r\n","import { Duration } from './constructor';\r\nimport { absFloor } from '../utils';\r\nimport { absCeil } from '../utils/abs-ceil';\r\n\r\nexport function bubble(dur: Duration): Duration {\r\n  let milliseconds = dur._milliseconds;\r\n  let days = dur._days;\r\n  let months = dur._months;\r\n  const data = dur._data;\r\n\r\n  // if we have a mix of positive and negative values, bubble down first\r\n  // check: https://github.com/moment/moment/issues/2166\r\n  if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\r\n      (milliseconds <= 0 && days <= 0 && months <= 0))) {\r\n    milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\r\n    days = 0;\r\n    months = 0;\r\n  }\r\n\r\n  // The following code bubbles up values, see the tests for\r\n  // examples of what that means.\r\n  data.milliseconds = milliseconds % 1000;\r\n\r\n  const seconds = absFloor(milliseconds / 1000);\r\n  data.seconds = seconds % 60;\r\n\r\n  const minutes = absFloor(seconds / 60);\r\n  data.minutes = minutes % 60;\r\n\r\n  const hours = absFloor(minutes / 60);\r\n  data.hours = hours % 24;\r\n\r\n  days += absFloor(hours / 24);\r\n\r\n  // convert days to months\r\n  const monthsFromDays = absFloor(daysToMonths(days));\r\n  months += monthsFromDays;\r\n  days -= absCeil(monthsToDays(monthsFromDays));\r\n\r\n  // 12 months -> 1 year\r\n  const years = absFloor(months / 12);\r\n  months %= 12;\r\n\r\n  data.day = days;\r\n  data.month = months;\r\n  data.year = years;\r\n\r\n  return dur;\r\n}\r\n\r\nexport function daysToMonths(day: number): number {\r\n  // 400 years have 146097 days (taking into account leap year rules)\r\n  // 400 years have 12 months === 4800\r\n  return day * 4800 / 146097;\r\n}\r\n\r\nexport function monthsToDays(month: number): number {\r\n  // the reverse of daysToMonths\r\n  return month * 146097 / 4800;\r\n}\r\n","import { createDuration } from './create';\r\nimport { Locale } from '../locale/locale.class';\r\nimport { Duration } from './constructor';\r\n\r\nlet round = Math.round;\r\nconst thresholds: { [key: string]: number } = {\r\n  ss: 44,         // a few seconds to seconds\r\n  s: 45,         // seconds to minute\r\n  m: 45,         // minutes to hour\r\n  h: 22,         // hours to day\r\n  d: 26,         // days to month\r\n  M: 11          // months to year\r\n};\r\n\r\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\r\nfunction substituteTimeAgo(str: 'future' | 'past', num: number,\r\n                           withoutSuffix: boolean, isFuture: boolean,\r\n                           locale: Locale): string {\r\n  return locale.relativeTime(num || 1, !!withoutSuffix, str, isFuture);\r\n}\r\n\r\nexport function relativeTime(posNegDuration: Duration, withoutSuffix: boolean, locale: Locale): string {\r\n  const duration = createDuration(posNegDuration).abs();\r\n  const seconds = round(duration.as('s'));\r\n  const minutes = round(duration.as('m'));\r\n  const hours = round(duration.as('h'));\r\n  const days = round(duration.as('d'));\r\n  const months = round(duration.as('M'));\r\n  const years = round(duration.as('y'));\r\n\r\n  const a: [string] | [string, number] =\r\n    seconds <= thresholds[\"ss\"] && ['s', seconds] ||\r\n    seconds < thresholds[\"s\"] && ['ss', seconds] ||\r\n    minutes <= 1 && ['m'] ||\r\n    minutes < thresholds[\"m\"] && ['mm', minutes] ||\r\n    hours <= 1 && ['h'] ||\r\n    hours < thresholds[\"h\"] && ['hh', hours] ||\r\n    days <= 1 && ['d'] ||\r\n    days < thresholds[\"d\"] && ['dd', days] ||\r\n    months <= 1 && ['M'] ||\r\n    months < thresholds[\"M\"] && ['MM', months] ||\r\n    years <= 1 && ['y'] || ['yy', years];\r\n\r\n  const b: [string, number | string, boolean, boolean, Locale] =\r\n    [a[0], a[1], withoutSuffix, +posNegDuration > 0, locale];\r\n  // a[2] = withoutSuffix;\r\n  // a[3] = +posNegDuration > 0;\r\n  // a[4] = locale;\r\n\r\n  return substituteTimeAgo.apply(null, b);\r\n}\r\n\r\n// This function allows you to set the rounding function for relative time strings\r\nexport function getSetRelativeTimeRounding(roundingFunction: any): boolean | ((x: number) => number) {\r\n  if (roundingFunction === undefined) {\r\n    return round;\r\n  }\r\n  if (typeof(roundingFunction) === 'function') {\r\n    round = roundingFunction;\r\n\r\n    return true;\r\n  }\r\n\r\n  return false;\r\n}\r\n\r\n// This function allows you to set a threshold for relative time strings\r\nexport function getSetRelativeTimeThreshold(threshold: string, limit: number): boolean | number {\r\n  if (thresholds[threshold] === undefined) {\r\n    return false;\r\n  }\r\n  if (limit === undefined) {\r\n    return thresholds[threshold];\r\n  }\r\n  thresholds[threshold] = limit;\r\n  if (threshold === 's') {\r\n    thresholds[\"ss\"] = limit - 1;\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\n// export function humanize(withSuffix) {\r\n//   if (!this.isValid()) {\r\n//     return this.localeData().invalidDate();\r\n//   }\r\n//\r\n//   const locale = this.localeData();\r\n//   let output = relativeTime(this, !withSuffix, locale);\r\n//\r\n//   if (withSuffix) {\r\n//     output = locale.pastFuture(+this, output);\r\n//   }\r\n//\r\n//   return locale.postformat(output);\r\n// }\r\n","import { getLocale } from '../locale/locales';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { isDurationValid } from './valid';\r\nimport { bubble, daysToMonths, monthsToDays } from './bubble';\r\nimport { DateObject } from '../types';\r\nimport { Locale } from '../locale/locale.class';\r\nimport { normalizeUnits } from '../units/aliases';\r\nimport { relativeTime } from './humanize';\r\nimport { toInt } from '../utils/type-checks';\r\n\r\nexport class Duration {\r\n  _milliseconds: number;\r\n  _days: number;\r\n  _months: number;\r\n  _data: Partial<DateObject> = {};\r\n  _locale: Locale = getLocale();\r\n  _isValid: boolean;\r\n\r\n  constructor(duration: Partial<DateObject>, config: DateParsingConfig = {}) {\r\n    this._locale = config && config._locale || getLocale();\r\n    // const normalizedInput = normalizeObjectUnits(duration);\r\n    const normalizedInput = duration;\r\n    const years = normalizedInput.year || 0;\r\n    const quarters = normalizedInput.quarter || 0;\r\n    const months = normalizedInput.month || 0;\r\n    const weeks = normalizedInput.week || 0;\r\n    const days = normalizedInput.day || 0;\r\n    const hours = normalizedInput.hours || 0;\r\n    const minutes = normalizedInput.minutes || 0;\r\n    const seconds = normalizedInput.seconds || 0;\r\n    const milliseconds = normalizedInput.milliseconds || 0;\r\n\r\n    this._isValid = isDurationValid(normalizedInput);\r\n\r\n    // representation for dateAddRemove\r\n    this._milliseconds = +milliseconds +\r\n      seconds * 1000 +\r\n      minutes * 60 * 1000 + // 1000 * 60\r\n      hours * 1000 * 60 * 60; // using 1000 * 60 * 60\r\n    // instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\r\n    // Because of dateAddRemove treats 24 hours as different from a\r\n    // day when working around DST, we need to store them separately\r\n    this._days = +days +\r\n      weeks * 7;\r\n    // It is impossible to translate months into days without knowing\r\n    // which months you are are talking about, so we have to store\r\n    // it separately.\r\n    this._months = +months +\r\n      quarters * 3 +\r\n      years * 12;\r\n\r\n    // this._data = {};\r\n\r\n    // this._locale = getLocale();\r\n\r\n    // this._bubble();\r\n    return bubble(this);\r\n  }\r\n\r\n  isValid(): boolean {\r\n    return this._isValid;\r\n  }\r\n\r\n  humanize(withSuffix?: boolean): string {\r\n    // throw new Error(`TODO: implement`);\r\n\r\n    if (!this.isValid()) {\r\n      return this.localeData().invalidDate;\r\n    }\r\n\r\n    const locale = this.localeData();\r\n    let output = relativeTime(this, !withSuffix, locale);\r\n\r\n    if (withSuffix) {\r\n      output = locale.pastFuture(+this, output);\r\n    }\r\n\r\n    return locale.postformat(output);\r\n  }\r\n\r\n  localeData(): Locale {\r\n    return this._locale;\r\n  }\r\n\r\n  locale(): string;\r\n  locale(localeKey: string): Duration;\r\n  locale(localeKey?: string): Duration | string {\r\n    if (!localeKey) {\r\n      return this._locale._abbr;\r\n    }\r\n\r\n    this._locale = getLocale(localeKey) || this._locale;\r\n\r\n    return this;\r\n  }\r\n\r\n\r\n  abs(): Duration {\r\n    const mathAbs = Math.abs;\r\n\r\n    const data = this._data;\r\n\r\n    this._milliseconds = mathAbs(this._milliseconds);\r\n    this._days = mathAbs(this._days);\r\n    this._months = mathAbs(this._months);\r\n\r\n    data.milliseconds = mathAbs(data.milliseconds);\r\n    data.seconds = mathAbs(data.seconds);\r\n    data.minutes = mathAbs(data.minutes);\r\n    data.hours = mathAbs(data.hours);\r\n    data.month = mathAbs(data.month);\r\n    data.year = mathAbs(data.year);\r\n\r\n    return this;\r\n  }\r\n\r\n  as(_units: string): number {\r\n    if (!this.isValid()) {\r\n      return NaN;\r\n    }\r\n    let days;\r\n    let months;\r\n    const milliseconds = this._milliseconds;\r\n\r\n    const units = normalizeUnits(_units);\r\n\r\n    if (units === 'month' || units === 'year') {\r\n      days = this._days + milliseconds / 864e5;\r\n      months = this._months + daysToMonths(days);\r\n\r\n      return units === 'month' ? months : months / 12;\r\n    }\r\n\r\n    // handle milliseconds separately because of floating point math errors (issue #1867)\r\n    days = this._days + Math.round(monthsToDays(this._months));\r\n    switch (units) {\r\n      case 'week'   :\r\n        return days / 7 + milliseconds / 6048e5;\r\n      case 'day'    :\r\n        return days + milliseconds / 864e5;\r\n      case 'hours'   :\r\n        return days * 24 + milliseconds / 36e5;\r\n      case 'minutes' :\r\n        return days * 1440 + milliseconds / 6e4;\r\n      case 'seconds' :\r\n        return days * 86400 + milliseconds / 1000;\r\n      // Math.floor prevents floating point math errors here\r\n      case 'milliseconds':\r\n        return Math.floor(days * 864e5) + milliseconds;\r\n      default:\r\n        throw new Error(`Unknown unit ${units}`);\r\n    }\r\n  }\r\n\r\n  valueOf () {\r\n    if (!this.isValid()) {\r\n      return NaN;\r\n    }\r\n\r\n    return (\r\n      this._milliseconds +\r\n      this._days * 864e5 +\r\n      (this._months % 12) * 2592e6 +\r\n      toInt(this._months / 12) * 31536e6\r\n    );\r\n  }\r\n}\r\n\r\nexport function isDuration(obj: any): obj is Duration {\r\n  return obj instanceof Duration;\r\n}\r\n","import { DateParsingConfig } from './parsing.types';\r\nimport { getParsingFlags } from './parsing-flags';\r\n\r\nexport function isValid(config: DateParsingConfig): boolean {\r\n  if (config._isValid == null) {\r\n    const flags = getParsingFlags(config);\r\n    const parsedParts = Array.prototype.some.call(flags.parsedDateParts, function (i: number) {\r\n      return i != null;\r\n    });\r\n    let isNowValid = !isNaN(config._d && config._d.getTime()) &&\r\n      flags.overflow < 0 &&\r\n      !flags.empty &&\r\n      !flags.invalidMonth &&\r\n      !flags.invalidWeekday &&\r\n      !flags.weekdayMismatch &&\r\n      !flags.nullInput &&\r\n      !flags.invalidFormat &&\r\n      !flags.userInvalidated &&\r\n      (!flags.meridiem || (flags.meridiem && parsedParts));\r\n\r\n    if (config._strict) {\r\n      isNowValid = isNowValid &&\r\n        flags.charsLeftOver === 0 &&\r\n        flags.unusedTokens.length === 0 &&\r\n        flags.bigHour === undefined;\r\n    }\r\n\r\n    if (Object.isFrozen == null || !Object.isFrozen(config)) {\r\n      config._isValid = isNowValid;\r\n    } else {\r\n      return isNowValid;\r\n    }\r\n  }\r\n\r\n  return config._isValid;\r\n}\r\n\r\nexport function createInvalid(config: DateParsingConfig, flags?: { nullInput: boolean }): DateParsingConfig {\r\n  config._d = new Date(NaN);\r\n  Object.assign(getParsingFlags(config), flags || { userInvalidated: true });\r\n\r\n  return config;\r\n}\r\n\r\nexport function markInvalid(config: DateParsingConfig): DateParsingConfig {\r\n  config._isValid = false;\r\n\r\n  return config;\r\n}\r\n","import { defaultLocaleMonthsShort, defaultLocaleWeekdaysShort } from '../locale/locale.class';\r\nimport { DateArray } from '../types';\r\nimport { DateParsingConfig } from './parsing.types';\r\nimport { isString } from '../utils/type-checks';\r\nimport { configFromStringAndFormat } from './from-string-and-format';\r\nimport { createUTCDate } from './date-from-array';\r\nimport { createInvalid, markInvalid } from './valid';\r\nimport { getParsingFlags } from './parsing-flags';\r\n\r\n// iso 8601 regex\r\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\r\nconst extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\r\nconst basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\r\n\r\nconst tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\r\n\r\nconst isoDates: [string, RegExp, boolean][] = [\r\n  ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/, true],\r\n  ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/, true],\r\n  ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/, true],\r\n  ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\r\n  ['YYYY-DDD', /\\d{4}-\\d{3}/, true],\r\n  ['YYYY-MM', /\\d{4}-\\d\\d/, false],\r\n  ['YYYYYYMMDD', /[+-]\\d{10}/, true],\r\n  ['YYYYMMDD', /\\d{8}/, true],\r\n  // YYYYMM is NOT allowed by the standard\r\n  ['GGGG[W]WWE', /\\d{4}W\\d{3}/, true],\r\n  ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\r\n  ['YYYYDDD', /\\d{7}/, true]\r\n];\r\n\r\n// iso time formats and regexes\r\nconst isoTimes: [string, RegExp][] = [\r\n  ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\r\n  ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\r\n  ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\r\n  ['HH:mm', /\\d\\d:\\d\\d/],\r\n  ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\r\n  ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\r\n  ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\r\n  ['HHmm', /\\d\\d\\d\\d/],\r\n  ['HH', /\\d\\d/]\r\n];\r\n\r\nconst aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\r\n\r\nconst obsOffsets: { [key: string]: number } = {\r\n  UT: 0,\r\n  GMT: 0,\r\n  EDT: -4 * 60,\r\n  EST: -5 * 60,\r\n  CDT: -5 * 60,\r\n  CST: -6 * 60,\r\n  MDT: -6 * 60,\r\n  MST: -7 * 60,\r\n  PDT: -7 * 60,\r\n  PST: -8 * 60\r\n};\r\n\r\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\r\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\r\n\r\n// date from iso format\r\nexport function configFromISO(config: DateParsingConfig): DateParsingConfig {\r\n  if (!isString(config._i)) {\r\n    return config;\r\n  }\r\n\r\n  const input = config._i;\r\n  const match = extendedIsoRegex.exec(input) || basicIsoRegex.exec(input);\r\n\r\n\r\n  let allowTime;\r\n  let dateFormat;\r\n  let timeFormat;\r\n  let tzFormat;\r\n\r\n  if (!match) {\r\n    config._isValid = false;\r\n\r\n    return config;\r\n  }\r\n\r\n  // getParsingFlags(config).iso = true;\r\n  let i;\r\n  let l;\r\n  for (i = 0, l = isoDates.length; i < l; i++) {\r\n    if (isoDates[i][1].exec(match[1])) {\r\n      dateFormat = isoDates[i][0];\r\n      allowTime = isoDates[i][2] !== false;\r\n      break;\r\n    }\r\n  }\r\n\r\n  if (dateFormat == null) {\r\n    config._isValid = false;\r\n\r\n    return config;\r\n  }\r\n\r\n  if (match[3]) {\r\n    for (i = 0, l = isoTimes.length; i < l; i++) {\r\n      if (isoTimes[i][1].exec(match[3])) {\r\n        // match[2] should be 'T' or space\r\n        timeFormat = (match[2] || ' ') + isoTimes[i][0];\r\n        break;\r\n      }\r\n    }\r\n\r\n    if (timeFormat == null) {\r\n      config._isValid = false;\r\n\r\n      return config;\r\n    }\r\n\r\n  }\r\n  if (!allowTime && timeFormat != null) {\r\n    config._isValid = false;\r\n\r\n    return config;\r\n  }\r\n\r\n  if (match[4]) {\r\n    if (tzRegex.exec(match[4])) {\r\n      tzFormat = 'Z';\r\n    } else {\r\n      config._isValid = false;\r\n\r\n      return config;\r\n    }\r\n  }\r\n\r\n  config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\r\n\r\n  return configFromStringAndFormat(config);\r\n}\r\n\r\nfunction extractFromRFC2822Strings(yearStr: string, monthStr: string, dayStr: string, hourStr: string, minuteStr: string, secondStr: string): DateArray {\r\n  const result = [\r\n    untruncateYear(yearStr),\r\n    defaultLocaleMonthsShort.indexOf(monthStr),\r\n    parseInt(dayStr, 10),\r\n    parseInt(hourStr, 10),\r\n    parseInt(minuteStr, 10)\r\n  ];\r\n\r\n  if (secondStr) {\r\n    result.push(parseInt(secondStr, 10));\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nfunction untruncateYear(yearStr: string): number {\r\n  const year = parseInt(yearStr, 10);\r\n\r\n  return year <= 49 ? year + 2000 : year;\r\n}\r\n\r\nfunction preprocessRFC2822(str: string): string {\r\n  // Remove comments and folding whitespace and replace multiple-spaces with a single space\r\n  return str\r\n    .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\r\n    .replace(/(\\s\\s+)/g, ' ').trim();\r\n}\r\n\r\nfunction checkWeekday(weekdayStr: string, parsedInput: DateArray, config: DateParsingConfig): boolean {\r\n  if (weekdayStr) {\r\n    // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\r\n    const weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr);\r\n    const weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\r\n    if (weekdayProvided !== weekdayActual) {\r\n      getParsingFlags(config).weekdayMismatch = true;\r\n      config._isValid = false;\r\n\r\n      return false;\r\n    }\r\n  }\r\n\r\n  return true;\r\n}\r\n\r\nfunction calculateOffset(obsOffset: string, militaryOffset: string, numOffset: string) {\r\n  if (obsOffset) {\r\n    return obsOffsets[obsOffset];\r\n  } else if (militaryOffset) {\r\n    // the only allowed military tz is Z\r\n    return 0;\r\n  } else {\r\n    const hm = parseInt(numOffset, 10);\r\n    const m = hm % 100;\r\n    const h = (hm - m) / 100;\r\n\r\n    return h * 60 + m;\r\n  }\r\n}\r\n\r\n// date and time from ref 2822 format\r\nexport function configFromRFC2822(config: DateParsingConfig): DateParsingConfig {\r\n  if (!isString(config._i)) {\r\n    return config;\r\n  }\r\n\r\n  const match = rfc2822.exec(preprocessRFC2822(config._i));\r\n\r\n  if (!match) {\r\n    return markInvalid(config);\r\n  }\r\n\r\n  const parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\r\n  if (!checkWeekday(match[1], parsedArray, config)) {\r\n    return config;\r\n  }\r\n\r\n  config._a = parsedArray;\r\n  config._tzm = calculateOffset(match[8], match[9], match[10]);\r\n\r\n  config._d = createUTCDate.apply(null, config._a);\r\n  config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\r\n\r\n  getParsingFlags(config).rfc2822 = true;\r\n\r\n  return config;\r\n}\r\n\r\n// date from iso format or fallback\r\nexport function configFromString(config: DateParsingConfig): DateParsingConfig {\r\n  if (!isString(config._i)) {\r\n    return config;\r\n  }\r\n\r\n  const matched = aspNetJsonRegex.exec(config._i);\r\n\r\n  if (matched !== null) {\r\n    config._d = new Date(+matched[1]);\r\n\r\n    return config;\r\n  }\r\n\r\n  // todo: update logic processing\r\n  // isISO -> configFromISO\r\n  // isRFC -> configFromRFC\r\n\r\n  configFromISO(config);\r\n  if (config._isValid === false) {\r\n    delete config._isValid;\r\n  } else {\r\n    return config;\r\n  }\r\n\r\n  configFromRFC2822(config);\r\n  if (config._isValid === false) {\r\n    delete config._isValid;\r\n  } else {\r\n    return config;\r\n  }\r\n\r\n  // Final attempt, use Input Fallback\r\n  // hooks.createFromInputFallback(config);\r\n  return createInvalid(config);\r\n}\r\n\r\n// hooks.createFromInputFallback = deprecate(\r\n//     'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\r\n//     'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\r\n//     'discouraged and will be removed in an upcoming major release. Please refer to ' +\r\n//     'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\r\n//     function (config) {\r\n//         config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\r\n//     }\r\n// );\r\n","// moment.js\r\n// version : 2.18.1\r\n// authors : Tim Wood, Iskren Chernev, Moment.js contributors\r\n// license : MIT\r\n// momentjs.com\r\n\r\nimport './units/index';\r\nimport { formatFunctions, makeFormatFunction } from './format/format';\r\nimport { Locale } from './locale/locale.class';\r\nimport { getLocale } from './locale/locales';\r\nimport { isDateValid } from './utils/type-checks';\r\n\r\nexport function formatDate(date: Date, format?: string, locale?: string, isUTC?: boolean, offset = 0): string {\r\n  const _locale = getLocale(locale || 'en');\r\n  if (!_locale) {\r\n    throw new Error(\r\n      `Locale \"${locale}\" is not defined, please add it with \"defineLocale(...)\"`\r\n    );\r\n  }\r\n\r\n  const _format = format || (isUTC ?  'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ssZ');\r\n\r\n  const output = formatMoment(date, _format, _locale, isUTC, offset);\r\n\r\n  if (!output) {\r\n    return output;\r\n  }\r\n\r\n  return _locale.postformat(output);\r\n}\r\n\r\n// format date using native date object\r\nexport function formatMoment(date: Date, _format: string, locale: Locale, isUTC?: boolean, offset = 0): string {\r\n  if (!isDateValid(date)) {\r\n    return locale.invalidDate;\r\n  }\r\n\r\n  const format = expandFormat(_format, locale);\r\n  formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\r\n\r\n  return formatFunctions[format](date, locale, isUTC, offset);\r\n}\r\n\r\nexport function expandFormat(_format: string, locale: Locale): string {\r\n  let format = _format;\r\n  let i = 5;\r\n  const localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\r\n\r\n  const replaceLongDateFormatTokens = (input: any) => {\r\n    return locale.formatLongDate(input) || input;\r\n  };\r\n\r\n  localFormattingTokens.lastIndex = 0;\r\n  while (i >= 0 && localFormattingTokens.test(format)) {\r\n    format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\r\n    localFormattingTokens.lastIndex = 0;\r\n    i -= 1;\r\n  }\r\n\r\n  return format;\r\n}\r\n","// Pick the first defined of two or three arguments.\r\nexport function defaults<T>(a?: T, b?: T, c?: T): T {\r\n  if (a != null) {\r\n    return a;\r\n  }\r\n  if (b != null) {\r\n    return b;\r\n  }\r\n\r\n  return c;\r\n}\r\n","import { DateParsingConfig } from './parsing.types';\r\nimport { DateArray } from '../types';\r\nimport { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, YEAR } from '../units/constants';\r\nimport { daysInYear } from '../units/year';\r\nimport { getParsingFlags } from './parsing-flags';\r\nimport { createUTCDate } from './date-from-array';\r\nimport { createDate } from './date-from-array';\r\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from '../units/week-calendar-utils';\r\nimport { defaults } from '../utils/defaults';\r\n\r\nfunction currentDateArray(config: DateParsingConfig): DateArray {\r\n  const nowValue = new Date();\r\n\r\n  if (config._useUTC) {\r\n    return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\r\n  }\r\n\r\n  return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\r\n}\r\n\r\n// convert an array to a date.\r\n// the array should mirror the parameters below\r\n// note: all values past the year are optional and will default to the lowest possible value.\r\n// [year, month, day , hour, minute, second, millisecond]\r\nexport function configFromArray(config: DateParsingConfig): DateParsingConfig {\r\n  const input = [];\r\n  let i;\r\n  let date;\r\n  let yearToUse;\r\n\r\n  if (config._d) {\r\n    return config;\r\n  }\r\n\r\n  const currentDate = currentDateArray(config);\r\n\r\n  // compute day of the year from weeks and weekdays\r\n  if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\r\n    dayOfYearFromWeekInfo(config);\r\n  }\r\n\r\n  // if the day of the year is set, figure out what it is\r\n  if (config._dayOfYear != null) {\r\n    yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\r\n\r\n    if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\r\n      getParsingFlags(config)._overflowDayOfYear = true;\r\n    }\r\n\r\n    date = new Date(Date.UTC(yearToUse, 0, config._dayOfYear));\r\n    config._a[MONTH] = date.getUTCMonth();\r\n    config._a[DATE] = date.getUTCDate();\r\n  }\r\n\r\n  // Default to current date.\r\n  // * if no year, month, day of month are given, default to today\r\n  // * if day of month is given, default month and year\r\n  // * if month is given, default only year\r\n  // * if year is given, don't default anything\r\n  for (i = 0; i < 3 && config._a[i] == null; ++i) {\r\n    config._a[i] = input[i] = currentDate[i];\r\n  }\r\n\r\n  // Zero out whatever was not defaulted, including time\r\n  for (; i < 7; i++) {\r\n    config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\r\n  }\r\n\r\n  // Check for 24:00:00.000\r\n  if (config._a[HOUR] === 24 &&\r\n    config._a[MINUTE] === 0 &&\r\n    config._a[SECOND] === 0 &&\r\n    config._a[MILLISECOND] === 0) {\r\n    config._nextDay = true;\r\n    config._a[HOUR] = 0;\r\n  }\r\n\r\n  // eslint-disable-next-line prefer-spread\r\n  config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\r\n  const expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\r\n\r\n  // Apply timezone offset from input. The actual utcOffset can be changed\r\n  // with parseZone.\r\n  if (config._tzm != null) {\r\n    config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\r\n  }\r\n\r\n  if (config._nextDay) {\r\n    config._a[HOUR] = 24;\r\n  }\r\n\r\n  // check for mismatching day of week\r\n  if (config._w && typeof config._w[\"d\"] !== 'undefined' && config._w[\"d\"] !== expectedWeekday) {\r\n    getParsingFlags(config).weekdayMismatch = true;\r\n  }\r\n\r\n  return config;\r\n}\r\n\r\nfunction dayOfYearFromWeekInfo(config: DateParsingConfig): DateParsingConfig {\r\n  let weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\r\n\r\n  const w = config._w;\r\n  if (w[\"GG\"] != null || w[\"W\"] != null || w[\"E\"] != null) {\r\n    dow = 1;\r\n    doy = 4;\r\n\r\n    // TODO: We need to take the current isoWeekYear, but that depends on\r\n    // how we interpret now (local, utc, fixed offset). So create\r\n    // a now version of current config (take local/utc/offset flags, and\r\n    // create now).\r\n    weekYear = defaults(w[\"GG\"], config._a[YEAR], weekOfYear(new Date(), 1, 4).year);\r\n    week = defaults(w[\"W\"], 1);\r\n    weekday = defaults(w[\"E\"], 1);\r\n    if (weekday < 1 || weekday > 7) {\r\n      weekdayOverflow = true;\r\n    }\r\n  } else {\r\n    dow = config._locale._week.dow;\r\n    doy = config._locale._week.doy;\r\n\r\n    const curWeek = weekOfYear(new Date(), dow, doy);\r\n\r\n    weekYear = defaults(w[\"gg\"], config._a[YEAR], curWeek.year);\r\n\r\n    // Default to current week.\r\n    week = defaults(w[\"w\"], curWeek.week);\r\n\r\n    if (w[\"d\"] != null) {\r\n      // weekday -- low day numbers are considered next week\r\n      weekday = w[\"d\"];\r\n      if (weekday < 0 || weekday > 6) {\r\n        weekdayOverflow = true;\r\n      }\r\n    } else if (w[\"e\"] != null) {\r\n      // local weekday -- counting starts from beginning of week\r\n      weekday = w[\"e\"] + dow;\r\n      if (w[\"e\"] < 0 || w[\"e\"] > 6) {\r\n        weekdayOverflow = true;\r\n      }\r\n    } else {\r\n      // default to beginning of week\r\n      weekday = dow;\r\n    }\r\n  }\r\n  if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\r\n    getParsingFlags(config)._overflowWeeks = true;\r\n  } else if (weekdayOverflow != null) {\r\n    getParsingFlags(config)._overflowWeekday = true;\r\n  } else {\r\n    temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\r\n    config._a[YEAR] = temp.year;\r\n    config._dayOfYear = temp.dayOfYear;\r\n  }\r\n\r\n  return config;\r\n}\r\n","import { getParsingFlags } from './parsing-flags';\r\nimport { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, WEEK, WEEKDAY, YEAR } from '../units/constants';\r\nimport { daysInMonth } from '../units/month';\r\nimport { DateParsingConfig } from './parsing.types';\r\n\r\nexport function checkOverflow(config: DateParsingConfig): DateParsingConfig {\r\n  let overflow;\r\n  const a = config._a;\r\n\r\n  if (a && getParsingFlags(config).overflow === -2) {\r\n    // todo: fix this sh*t\r\n    overflow =\r\n      a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\r\n        a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\r\n          a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\r\n            a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\r\n              a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\r\n                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\r\n                  -1;\r\n\r\n    if (getParsingFlags(config)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\r\n      overflow = DATE;\r\n    }\r\n    if (getParsingFlags(config)._overflowWeeks && overflow === -1) {\r\n      overflow = WEEK;\r\n    }\r\n    if (getParsingFlags(config)._overflowWeekday && overflow === -1) {\r\n      overflow = WEEKDAY;\r\n    }\r\n\r\n    getParsingFlags(config).overflow = overflow;\r\n  }\r\n\r\n  return config;\r\n}\r\n\r\n","import { DateParsingConfig } from './parsing.types';\r\nimport { configFromISO, configFromRFC2822 } from './from-string';\r\nimport { expandFormat } from '../format';\r\nimport { formattingTokens, formatTokenFunctions } from '../format/format';\r\nimport { isArray, isString } from '../utils/type-checks';\r\nimport { getParseRegexForToken } from '../parse/regex';\r\nimport { addTimeToArrayFromToken } from '../parse/token';\r\nimport { HOUR } from '../units/constants';\r\nimport { configFromArray } from './from-array';\r\nimport { getParsingFlags } from './parsing-flags';\r\nimport { checkOverflow } from './check-overflow';\r\nimport { Locale } from '../locale/locale.class';\r\n\r\n// constant that refers to the ISO standard\r\n// hooks.ISO_8601 = function () {};\r\nexport const ISO_8601 = 'ISO_8601';\r\n\r\n// constant that refers to the RFC 2822 form\r\n// hooks.RFC_2822 = function () {};\r\nexport const RFC_2822 = 'RFC_2822';\r\n\r\n// date from string and format string\r\nexport function configFromStringAndFormat(config: DateParsingConfig): DateParsingConfig {\r\n  // TODO: Move this to another part of the creation flow to prevent circular deps\r\n  if (config._f === ISO_8601) {\r\n    return configFromISO(config);\r\n  }\r\n  if (config._f === RFC_2822) {\r\n    return configFromRFC2822(config);\r\n  }\r\n  config._a = [];\r\n  getParsingFlags(config).empty = true;\r\n\r\n  if (isArray(config._f) || (!config._i && config._i !== 0)) {\r\n    return config;\r\n  }\r\n\r\n  // This array is used to make a Date, either with `new Date` or `Date.UTC`\r\n\r\n  let input = config._i.toString();\r\n  let totalParsedInputLength = 0;\r\n  const inputLength = input.length;\r\n  const tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\r\n\r\n  let i;\r\n  let token;\r\n  let parsedInput;\r\n  let skipped;\r\n  for (i = 0; i < tokens.length; i++) {\r\n    token = tokens[i];\r\n    parsedInput = (input.match(getParseRegexForToken(token, config._locale)) || [])[0];\r\n    if (parsedInput) {\r\n      skipped = input.substr(0, input.indexOf(parsedInput));\r\n      if (skipped.length > 0) {\r\n        getParsingFlags(config).unusedInput.push(skipped);\r\n      }\r\n      input = input.slice(input.indexOf(parsedInput) + parsedInput.length);\r\n      totalParsedInputLength += parsedInput.length;\r\n    }\r\n    // don't parse if it's not a known token\r\n    if (formatTokenFunctions[token]) {\r\n      if (parsedInput) {\r\n        getParsingFlags(config).empty = false;\r\n      } else {\r\n        getParsingFlags(config).unusedTokens.push(token);\r\n      }\r\n\r\n      addTimeToArrayFromToken(token, parsedInput, config);\r\n    } else if (config._strict && !parsedInput) {\r\n      getParsingFlags(config).unusedTokens.push(token);\r\n    }\r\n  }\r\n\r\n  // add remaining unparsed input length to the string\r\n  getParsingFlags(config).charsLeftOver = inputLength - totalParsedInputLength;\r\n  if (input.length > 0) {\r\n    getParsingFlags(config).unusedInput.push(input);\r\n  }\r\n\r\n  // clear _12h flag if hour is <= 12\r\n  if (config._a[HOUR] <= 12 &&\r\n    getParsingFlags(config).bigHour === true &&\r\n    config._a[HOUR] > 0) {\r\n    getParsingFlags(config).bigHour = void 0;\r\n  }\r\n\r\n  getParsingFlags(config).parsedDateParts = config._a.slice(0);\r\n  getParsingFlags(config).meridiem = config._meridiem;\r\n  // handle meridiem\r\n  config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\r\n\r\n  configFromArray(config);\r\n\r\n  return checkOverflow(config);\r\n}\r\n\r\n\r\nfunction meridiemFixWrap(locale: Locale, _hour: number, meridiem: string): number {\r\n  let hour = _hour;\r\n\r\n  if (meridiem == null) {\r\n    // nothing to do\r\n    return hour;\r\n  }\r\n\r\n  if (locale.meridiemHour != null) {\r\n    return locale.meridiemHour(hour, meridiem);\r\n  }\r\n\r\n  if (locale.isPM == null) {\r\n    // this is not supposed to happen\r\n    return hour;\r\n  }\r\n  // Fallback\r\n  const isPm = locale.isPM(meridiem);\r\n  if (isPm && hour < 12) {\r\n    hour += 12;\r\n  }\r\n\r\n  if (!isPm && hour === 12) {\r\n    hour = 0;\r\n  }\r\n\r\n  return hour;\r\n}\r\n","import { DateParsingConfig } from './parsing.types';\r\nimport { createInvalid, isValid } from './valid';\r\nimport { getParsingFlags } from './parsing-flags';\r\nimport { configFromStringAndFormat } from './from-string-and-format';\r\n\r\n// date from string and array of format strings\r\nexport function configFromStringAndArray(config: DateParsingConfig): DateParsingConfig {\r\n  let tempConfig;\r\n  let bestMoment;\r\n  let scoreToBeat;\r\n  let currentScore;\r\n\r\n  if (!config._f || config._f.length === 0) {\r\n    getParsingFlags(config).invalidFormat = true;\r\n\r\n    return createInvalid(config);\r\n  }\r\n\r\n  let i;\r\n  for (i = 0; i < config._f.length; i++) {\r\n    currentScore = 0;\r\n    tempConfig = Object.assign({}, config);\r\n    if (config._useUTC != null) {\r\n      tempConfig._useUTC = config._useUTC;\r\n    }\r\n    tempConfig._f = config._f[i];\r\n    configFromStringAndFormat(tempConfig);\r\n\r\n    if (!isValid(tempConfig)) {\r\n      continue;\r\n    }\r\n\r\n    // if there is any input that was not parsed add a penalty for that format\r\n    currentScore += getParsingFlags(tempConfig).charsLeftOver;\r\n\r\n    // or tokens\r\n    currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\r\n\r\n    getParsingFlags(tempConfig).score = currentScore;\r\n\r\n    if (scoreToBeat == null || currentScore < scoreToBeat) {\r\n      scoreToBeat = currentScore;\r\n      bestMoment = tempConfig;\r\n    }\r\n  }\r\n\r\n  return Object.assign(config, bestMoment || tempConfig);\r\n}\r\n","import { normalizeObjectUnits } from '../units/aliases';\r\nimport { configFromArray } from './from-array';\r\nimport { DateParsingConfig } from './parsing.types';\r\nimport { isObject, isString } from '../utils/type-checks';\r\n\r\nexport function configFromObject(config: DateParsingConfig): DateParsingConfig {\r\n  if (config._d) {\r\n    return config;\r\n  }\r\n\r\n  const input = config._i;\r\n  if (isObject(input)) {\r\n    const i = normalizeObjectUnits(input as Record<string, unknown>);\r\n    config._a = [i.year, i.month, i.day, i.hours, i.minutes, i.seconds, i.milliseconds]\r\n    // todo: obsolete -> remove it\r\n      .map(obj => isString(obj) ? parseInt(obj, 10) : obj);\r\n  }\r\n\r\n  return configFromArray(config);\r\n}\r\n","import { isArray, isDate, isNumber, isObject, isObjectEmpty, isString, isUndefined } from '../utils/type-checks';\r\nimport { DateParsingConfig } from './parsing.types';\r\nimport { getLocale } from '../locale/locales';\r\nimport { createInvalid, isValid } from './valid';\r\nimport { configFromStringAndArray } from './from-string-and-array';\r\nimport { configFromStringAndFormat } from './from-string-and-format';\r\nimport { cloneDate } from './clone';\r\nimport { configFromString } from './from-string';\r\nimport { configFromArray } from './from-array';\r\nimport { configFromObject } from './from-object';\r\nimport { checkOverflow } from './check-overflow';\r\nimport { DateInput } from '../testing/chain';\r\n\r\nfunction createFromConfig(config: DateParsingConfig): DateParsingConfig {\r\n  const res = checkOverflow(prepareConfig(config));\r\n  // todo: remove, in moment.js it's never called cuz of moment constructor\r\n  res._d = new Date(res._d != null ? res._d.getTime() : NaN);\r\n  if (!isValid(Object.assign({}, res, {_isValid: null}))) {\r\n    res._d = new Date(NaN);\r\n  }\r\n  // todo: update offset\r\n  /*if (res._nextDay) {\r\n    // Adding is smart enough around DST\r\n    res._d = add(res._d, 1, 'day');\r\n    res._nextDay = undefined;\r\n  }*/\r\n\r\n  return res;\r\n}\r\n\r\nexport function prepareConfig(config: DateParsingConfig): DateParsingConfig {\r\n  let input = config._i;\r\n  const format = config._f;\r\n\r\n  config._locale = config._locale || getLocale(config._l);\r\n\r\n  if (input === null || (format === undefined && input === '')) {\r\n    return createInvalid(config, { nullInput: true });\r\n  }\r\n\r\n  if (isString(input)) {\r\n    config._i = input = config._locale.preparse(input, format);\r\n  }\r\n\r\n  if (isDate(input)) {\r\n    config._d = cloneDate(input);\r\n\r\n    return config;\r\n  }\r\n\r\n  // todo: add check for recursion\r\n\r\n  if (isArray(format)) {\r\n    configFromStringAndArray(config);\r\n  } else if (format) {\r\n    configFromStringAndFormat(config);\r\n  } else {\r\n    configFromInput(config);\r\n  }\r\n\r\n  if (!isValid(config)) {\r\n    config._d = null;\r\n  }\r\n\r\n  return config;\r\n}\r\n\r\nfunction configFromInput(config: DateParsingConfig): DateParsingConfig {\r\n  const input = config._i;\r\n  if (isUndefined(input)) {\r\n    config._d = new Date();\r\n  } else if (isDate(input)) {\r\n    config._d = cloneDate(input);\r\n  } else if (isString(input)) {\r\n    configFromString(config);\r\n  } else if (isArray<string | number>(input) && input.length) {\r\n    const _arr: (string | number)[] = input.slice(0);\r\n    config._a = _arr.map(obj => isString(obj) ? parseInt(obj, 10) : obj);\r\n    configFromArray(config);\r\n  } else if (isObject(input)) {\r\n    configFromObject(config);\r\n  } else if (isNumber(input)) {\r\n    // from milliseconds\r\n    config._d = new Date(input);\r\n  } else {\r\n    //   hooks.createFromInputFallback(config);\r\n    return createInvalid(config);\r\n  }\r\n\r\n  return config;\r\n}\r\n\r\nexport function createLocalOrUTC(input: DateInput, format?: string | string[], localeKey?: string, strict?: boolean, isUTC?: boolean): DateParsingConfig {\r\n  const config: DateParsingConfig = {};\r\n  let _input = input;\r\n\r\n  // params switch -> skip; testing it well\r\n  // if (localeKey === true || localeKey === false) {\r\n  //     strict = localeKey;\r\n  //     localeKey = undefined;\r\n  // }\r\n\r\n  // todo: fail fast and return not valid date\r\n  if ((isObject(_input) && isObjectEmpty(_input)) || (isArray(_input) && _input.length === 0)) {\r\n    _input = undefined;\r\n  }\r\n  // object construction must be done this way.\r\n  // https://github.com/moment/moment/issues/1423\r\n  // config._isAMomentObject = true;\r\n  config._useUTC = config._isUTC = isUTC;\r\n  config._l = localeKey;\r\n  config._i = _input;\r\n  config._f = format;\r\n  config._strict = strict;\r\n\r\n  return createFromConfig(config);\r\n}\r\n","import { createLocalOrUTC } from './from-anything';\r\nimport { DateInput } from '../testing/chain';\r\nimport { isDate } from '../utils/type-checks';\r\n\r\nexport function parseDate(input: DateInput, format?: string | string[],\r\n                          localeKey?: string, strict?: boolean, isUTC?: boolean): Date {\r\n  if (isDate(input)) {\r\n    return input;\r\n  }\r\n\r\n  const config = createLocalOrUTC(input, format, localeKey, strict, isUTC);\r\n\r\n  return config._d;\r\n}\r\n\r\nexport function utcAsLocal(date) {\r\n  if (!(date instanceof Date)) {\r\n    return null;\r\n  }\r\n\r\n  return new Date(\r\n    date.getUTCFullYear(),\r\n    date.getUTCMonth(),\r\n    date.getUTCDate(),\r\n    date.getUTCHours(),\r\n    date.getUTCMinutes(),\r\n    date.getUTCSeconds(),\r\n    date.getUTCMilliseconds()\r\n  );\r\n}\r\n","export function absRound(num: number): number {\r\n  return num < 0 ? Math.round(num * -1) * -1 : Math.round(num);\r\n}\r\n","import { UnitOfTime } from '../types';\r\nimport { endOf, startOf } from './start-end-of';\r\n\r\nexport function isAfter(\r\n  date1?: Date,\r\n  date2?: Date,\r\n  units: UnitOfTime = 'milliseconds'\r\n): boolean {\r\n  if (!date1 || !date2) {\r\n    return false;\r\n  }\r\n\r\n  if (units === 'milliseconds') {\r\n    return date1.valueOf() > date2.valueOf();\r\n  }\r\n\r\n  return date2.valueOf() < startOf(date1, units).valueOf();\r\n}\r\n\r\nexport function isBefore(\r\n  date1?: Date,\r\n  date2?: Date,\r\n  units: UnitOfTime = 'milliseconds'\r\n): boolean {\r\n  if (!date1 || !date2) {\r\n    return false;\r\n  }\r\n\r\n  if (units === 'milliseconds') {\r\n    return date1.valueOf() < date2.valueOf();\r\n  }\r\n\r\n  return endOf(date1, units).valueOf() < date2.valueOf();\r\n}\r\n\r\nexport function isDisabledDay(date?: Date, daysDisabled?: number[]): boolean {\r\n  if (typeof daysDisabled === 'undefined' || !daysDisabled || !daysDisabled.length) {\r\n    return false;\r\n  }\r\n\r\n  return daysDisabled.some((day: number) => day === date.getDay());\r\n}\r\n\r\nexport function isBetween(\r\n  date: Date,\r\n  from: Date,\r\n  to: Date,\r\n  units: UnitOfTime,\r\n  inclusivity = '()'\r\n): boolean {\r\n  const leftBound =\r\n    inclusivity[0] === '('\r\n      ? isAfter(date, from, units)\r\n      : !isBefore(date, from, units);\r\n  const rightBound =\r\n    inclusivity[1] === ')'\r\n      ? isBefore(date, to, units)\r\n      : !isAfter(date, to, units);\r\n\r\n  return leftBound && rightBound;\r\n}\r\n\r\nexport function isSame(\r\n  date1?: Date,\r\n  date2?: Date,\r\n  units: UnitOfTime = 'milliseconds'\r\n): boolean {\r\n  if (!date1 || !date2) {\r\n    return false;\r\n  }\r\n\r\n  if (units === 'milliseconds') {\r\n    return date1.valueOf() === date2.valueOf();\r\n  }\r\n\r\n  const inputMs = date2.valueOf();\r\n\r\n  return (\r\n    startOf(date1, units).valueOf() <= inputMs &&\r\n    inputMs <= endOf(date1, units).valueOf()\r\n  );\r\n}\r\n\r\nexport function isSameDay(date1: Date, date2: Date):boolean{\r\n  return (date1.getDay() == date2.getDay());\r\n}\r\n\r\nexport function isSameOrAfter(\r\n  date1: Date,\r\n  date2: Date,\r\n  units?: UnitOfTime\r\n): boolean {\r\n  return isSame(date1, date2, units) || isAfter(date1, date2, units);\r\n}\r\n\r\nexport function isSameOrBefore(\r\n  date1: Date,\r\n  date2: Date,\r\n  units?: UnitOfTime\r\n): boolean {\r\n  return isSame(date1, date2, units) || isBefore(date1, date2, units);\r\n}\r\n","// ASP.NET json date format regex\r\nimport { Duration, isDuration } from './constructor';\r\nimport { isDateValid, isNumber, isObject, isString, toInt } from '../utils/type-checks';\r\nimport { DATE, HOUR, MILLISECOND, MINUTE, SECOND } from '../units/constants';\r\nimport { parseDate } from '../create/local';\r\nimport { absRound } from '../utils/abs-round';\r\nimport { DateObject } from '../types';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { cloneWithOffset } from '../units/offset';\r\nimport { isAfter, isBefore } from '../utils/date-compare';\r\nimport { getFullYear, getMonth } from '../utils/date-getters';\r\nimport { add } from '../moment/add-subtract';\r\nimport { cloneDate } from '../create/clone';\r\n\r\nconst aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\r\n\r\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\r\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\r\n// and further modified to allow for strings containing both week and day\r\nconst isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\r\n\r\nexport type DurationInput = string | number | Duration | Partial<DateObject> | { from: Date; to: Date };\r\n\r\nexport function createDuration(input?: DurationInput, key?: string, config: DateParsingConfig = {}) {\r\n  const duration = convertDuration(input, key);\r\n  // matching against regexp is expensive, do it on demand\r\n\r\n  return new Duration(duration, config);\r\n}\r\n\r\nfunction convertDuration(input: any, key: string): Partial<DateObject> {\r\n  // checks for null or undefined\r\n  if (input == null) {\r\n    return {};\r\n  }\r\n\r\n  if (isDuration(input)) {\r\n    return {\r\n      milliseconds: input._milliseconds,\r\n      day: input._days,\r\n      month: input._months\r\n    };\r\n  }\r\n  if (isNumber(input)) {\r\n    // duration = {};\r\n    return key ? { [key]: input } : { milliseconds: input };\r\n  }\r\n\r\n  if (isString(input)) {\r\n    let match = aspNetRegex.exec(input);\r\n\r\n    if (match) {\r\n      const sign = (match[1] === '-') ? -1 : 1;\r\n\r\n      return {\r\n        year: 0,\r\n        day: toInt(match[DATE]) * sign,\r\n        hours: toInt(match[HOUR]) * sign,\r\n        minutes: toInt(match[MINUTE]) * sign,\r\n        seconds: toInt(match[SECOND]) * sign,\r\n        // the millisecond decimal point is included in the match\r\n        milliseconds: toInt(absRound(toInt(match[MILLISECOND]) * 1000)) * sign\r\n      };\r\n    }\r\n\r\n    match = isoRegex.exec(input);\r\n    if (match) {\r\n      const sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\r\n\r\n      return {\r\n        year: parseIso(match[2], sign),\r\n        month: parseIso(match[3], sign),\r\n        week: parseIso(match[4], sign),\r\n        day: parseIso(match[5], sign),\r\n        hours: parseIso(match[6], sign),\r\n        minutes: parseIso(match[7], sign),\r\n        seconds: parseIso(match[8], sign)\r\n      };\r\n    }\r\n\r\n  }\r\n\r\n  if (isObject<{from: any; to: any}>(input) && ('from' in input || 'to' in input)) {\r\n    const diffRes = momentsDifference(parseDate(input.from), parseDate(input.to));\r\n\r\n    return {\r\n      milliseconds: diffRes.milliseconds,\r\n      month: diffRes.months\r\n    };\r\n  }\r\n\r\n  return input;\r\n}\r\n\r\n// createDuration.fn = Duration.prototype;\r\n// createDuration.invalid = invalid;\r\n\r\nfunction parseIso(inp: string, sign: number): number {\r\n  // We'd normally use ~~inp for this, but unfortunately it also\r\n  // converts floats to ints.\r\n  // inp may be undefined, so careful calling replace on it.\r\n  const res = inp && parseFloat(inp.replace(',', '.'));\r\n  // apply sign while we're at it\r\n\r\n  return (isNaN(res) ? 0 : res) * sign;\r\n}\r\n\r\nfunction positiveMomentsDifference(base: Date, other: Date): { milliseconds: number; months: number } {\r\n  const res = { milliseconds: 0, months: 0 };\r\n\r\n  res.months = getMonth(other) - getMonth(base) +\r\n    (getFullYear(other) - getFullYear(base)) * 12;\r\n  const _basePlus = add(cloneDate(base), res.months, 'month');\r\n  if (isAfter(_basePlus, other)) {\r\n    --res.months;\r\n  }\r\n\r\n  res.milliseconds = +other - +(add(cloneDate(base), res.months, 'month'));\r\n\r\n  return res;\r\n}\r\n\r\nfunction momentsDifference(base: Date, other: Date): { milliseconds: number; months: number } {\r\n  if (!(isDateValid(base) && isDateValid(other))) {\r\n    return { milliseconds: 0, months: 0 };\r\n  }\r\n\r\n  let res;\r\n  const _other = cloneWithOffset(other, base, {_offset: base.getTimezoneOffset()});\r\n  if (isBefore(base, _other)) {\r\n    res = positiveMomentsDifference(base, _other);\r\n  } else {\r\n    res = positiveMomentsDifference(_other, base);\r\n    res.milliseconds = -res.milliseconds;\r\n    res.months = -res.months;\r\n  }\r\n\r\n  return res;\r\n}\r\n","import { createDuration } from '../duration/create';\r\nimport { absRound } from '../utils/abs-round';\r\nimport { Duration } from '../duration/constructor';\r\nimport { getDate, getMonth, getTime } from '../utils/date-getters';\r\nimport { setDate, setMonth, setTime } from '../utils/date-setters';\r\nimport { cloneDate } from '../create/clone';\r\nimport { UnitOfTime } from '../types';\r\n\r\nexport function add(date: Date, val: number, period: UnitOfTime, isUTC?: boolean): Date {\r\n  const dur = createDuration(val, period);\r\n\r\n  return addSubtract(date, dur, 1, isUTC);\r\n}\r\n\r\nexport function subtract(date: Date, val: number, period: UnitOfTime, isUTC?: boolean): Date {\r\n  const dur = createDuration(val, period);\r\n\r\n  return addSubtract(date, dur, -1, isUTC);\r\n}\r\n\r\nexport function addSubtract(date: Date, duration: Duration, isAdding: number, isUTC?: boolean): Date {\r\n  const milliseconds = duration._milliseconds;\r\n  const days = absRound(duration._days);\r\n  const months = absRound(duration._months);\r\n\r\n  // todo: add timezones support\r\n  // const _updateOffset = updateOffset == null ? true : updateOffset;\r\n\r\n  if (months) {\r\n    setMonth(date, getMonth(date, isUTC) + months * isAdding, isUTC);\r\n  }\r\n  if (days) {\r\n    setDate(date, getDate(date, isUTC) + days * isAdding, isUTC);\r\n  }\r\n  if (milliseconds) {\r\n    setTime(date, getTime(date) + milliseconds * isAdding);\r\n  }\r\n\r\n  return cloneDate(date);\r\n  // todo: add timezones support\r\n  // if (_updateOffset) {\r\n  //   hooks.updateOffset(date, days || months);\r\n  // }\r\n}\r\n","import { addFormatToken } from '../format/format';\r\nimport { Locale } from '../locale/locale.class';\r\nimport { getDay } from '../utils/date-getters';\r\nimport { addRegexToken, match1to2 } from '../parse/regex';\r\nimport { addUnitAlias } from './aliases';\r\nimport { addUnitPriority } from './priorities';\r\nimport { addWeekParseToken } from '../parse/token';\r\nimport { getParsingFlags } from '../create/parsing-flags';\r\nimport { isNumber, isString, toInt } from '../utils/type-checks';\r\nimport { DateFormatterOptions, WeekParsing } from '../types';\r\nimport { DateParsingConfig } from '../create/parsing.types';\r\nimport { add } from '../moment/add-subtract';\r\nimport { getLocale } from '../locale/locales';\r\n\r\n\r\nexport function initDayOfWeek() {\r\n// FORMATTING\r\n\r\n  addFormatToken('d', null, 'do',\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getDay(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n  addFormatToken('dd', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);\r\n    }\r\n  );\r\n\r\n  addFormatToken('ddd', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);\r\n    }\r\n  );\r\n\r\n  addFormatToken('dddd', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return opts.locale.weekdays(date, opts.format, opts.isUTC);\r\n    }\r\n  );\r\n\r\n  addFormatToken('e', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getLocaleDayOfWeek(date, opts.locale, opts.isUTC)\r\n        .toString(10);\r\n      // return getDay(date, opts.isUTC).toString(10);\r\n    }\r\n  );\r\n  addFormatToken('E', null, null,\r\n    function(date: Date, opts: DateFormatterOptions): string {\r\n      return getISODayOfWeek(date, opts.isUTC)\r\n        .toString(10);\r\n    }\r\n  );\r\n\r\n// ALIASES\r\n\r\n  addUnitAlias('day', 'd');\r\n  addUnitAlias('weekday', 'e');\r\n  addUnitAlias('isoWeekday', 'E');\r\n\r\n// PRIORITY\r\n  addUnitPriority('day', 11);\r\n  addUnitPriority('weekday', 11);\r\n  addUnitPriority('isoWeekday', 11);\r\n\r\n// PARSING\r\n\r\n  addRegexToken('d', match1to2);\r\n  addRegexToken('e', match1to2);\r\n  addRegexToken('E', match1to2);\r\n\r\n  addRegexToken('dd', function(isStrict: boolean, locale: Locale): RegExp {\r\n    return locale.weekdaysMinRegex(isStrict);\r\n  });\r\n\r\n  addRegexToken('ddd', function(isStrict: boolean, locale: Locale): RegExp {\r\n    return locale.weekdaysShortRegex(isStrict);\r\n  });\r\n  addRegexToken('dddd', function(isStrict: boolean, locale: Locale): RegExp {\r\n    return locale.weekdaysRegex(isStrict);\r\n  });\r\n\r\n  addWeekParseToken(\r\n    ['dd', 'ddd', 'dddd'],\r\n    function(input: string, week: WeekParsing, config: DateParsingConfig, token) {\r\n      const weekday = config._locale.weekdaysParse(input, token, config._strict);\r\n      // if we didn't get a weekday name, mark the date as invalid\r\n      if (weekday != null) {\r\n        week[\"d\"] = weekday;\r\n      } else {\r\n        getParsingFlags(config).invalidWeekday = !!input;\r\n      }\r\n\r\n      return config;\r\n    }\r\n  );\r\n\r\n  addWeekParseToken(\r\n    ['d', 'e', 'E'],\r\n    function(input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {\r\n      week[token] = toInt(input);\r\n\r\n      return config;\r\n    }\r\n  );\r\n}\r\n\r\n// HELPERS\r\n\r\nexport function parseWeekday(input: string | number, locale: Locale): number {\r\n  if (!isString(input)) {\r\n    return input;\r\n  }\r\n\r\n  const _num = parseInt(input, 10);\r\n  if (!isNaN(_num)) {\r\n    return _num;\r\n  }\r\n\r\n  const _weekDay = locale.weekdaysParse(input);\r\n  if (isNumber(_weekDay)) {\r\n    return _weekDay;\r\n  }\r\n\r\n  return null;\r\n}\r\n\r\nexport function parseIsoWeekday(input: string | number, locale: Locale = getLocale()): number {\r\n  if (isString(input)) {\r\n    return locale.weekdaysParse(input) % 7 || 7;\r\n  }\r\n\r\n  return isNumber(input) && isNaN(input) ? null : input;\r\n}\r\n\r\n// MOMENTS\r\n\r\nexport function getSetDayOfWeek(date: Date, input: number, opts: { isUTC?: boolean; locale: Locale }): Date | number {\r\n  if (!input) {\r\n    return getDayOfWeek(date, opts.isUTC);\r\n  }\r\n\r\n  return setDayOfWeek(date, input, opts.locale, opts.isUTC);\r\n}\r\n\r\nexport function setDayOfWeek(date: Date, input: number, locale = getLocale(), isUTC?: boolean): Date {\r\n  const day = getDay(date, isUTC);\r\n  const _input = parseWeekday(input, locale);\r\n\r\n  return add(date, _input - day, 'day');\r\n}\r\n\r\nexport function getDayOfWeek(date: Date, isUTC?: boolean): number {\r\n  return getDay(date, isUTC);\r\n}\r\n\r\n/********************************************/\r\n\r\n// todo: utc\r\n// getSetLocaleDayOfWeek\r\nexport function getLocaleDayOfWeek(date: Date, locale = getLocale(), isUTC?: boolean): number {\r\n  return (getDay(date, isUTC) + 7 - locale.firstDayOfWeek()) % 7;\r\n}\r\n\r\nexport function setLocaleDayOfWeek(date: Date, input: number, opts: { locale?: Locale; isUTC?: boolean } = {}): Date {\r\n  const weekday = getLocaleDayOfWeek(date, opts.locale, opts.isUTC);\r\n\r\n  return add(date, input - weekday, 'day');\r\n}\r\n\r\n\r\n// getSetISODayOfWeek\r\nexport function getISODayOfWeek(date: Date, isUTC?: boolean): number {\r\n  return getDay(date, isUTC) || 7;\r\n}\r\n\r\nexport function setISODayOfWeek(date: Date, input: number | string, opts: { locale?: Locale } = {}): Date {\r\n  // behaves the same as moment#day except\r\n  // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\r\n  // as a setter, sunday should belong to the previous week.\r\n\r\n  const weekday = parseIsoWeekday(input, opts.locale);\r\n\r\n  return setDayOfWeek(date, getDayOfWeek(date) % 7 ? weekday : weekday - 7);\r\n}\r\n","//! moment.js locale configuration\r\n//! locale : Arabic [ar]\r\n//! author : Abdel Said: https://github.com/abdelsaid\r\n//! author : Ahmed Elkhatib\r\n//! author : forabi https://github.com/forabi\r\n\r\nimport { LocaleData } from '../locale/locale.class';\r\n\r\nconst symbolMap: {[key: string]: string} = {\r\n  1: '١',\r\n  2: '٢',\r\n  3: '٣',\r\n  4: '٤',\r\n  5: '٥',\r\n  6: '٦',\r\n  7: '٧',\r\n  8: '٨',\r\n  9: '٩',\r\n  0: '٠'\r\n};\r\nconst numberMap: {[key: string]: string} = {\r\n  '١': '1',\r\n  '٢': '2',\r\n  '٣': '3',\r\n  '٤': '4',\r\n  '٥': '5',\r\n  '٦': '6',\r\n  '٧': '7',\r\n  '٨': '8',\r\n  '٩': '9',\r\n  '٠': '0'\r\n};\r\nconst pluralForm = function (num: number): number {\r\n  return num === 0 ? 0 : num === 1 ? 1 : num === 2 ? 2 : num % 100 >= 3 && num % 100 <= 10 ? 3 : num % 100 >= 11 ? 4 : 5;\r\n};\r\nconst plurals: {[key: string]: [string, string, [string, string], string, string, string]} = {\r\n  s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\r\n  m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\r\n  h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\r\n  d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\r\n  M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\r\n  y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\r\n};\r\nconst pluralize = function (u: string) {\r\n  return function (num: number, withoutSuffix: boolean): string {\r\n    const f = pluralForm(num);\r\n    let str = plurals[u][pluralForm(num)];\r\n    if (f === 2) {\r\n      str = str[withoutSuffix ? 0 : 1];\r\n    }\r\n\r\n    return (str as string).replace(/%d/i, num.toString());\r\n  };\r\n};\r\nconst months: string[] = [\r\n  'يناير',\r\n  'فبراير',\r\n  'مارس',\r\n  'أبريل',\r\n  'مايو',\r\n  'يونيو',\r\n  'يوليو',\r\n  'أغسطس',\r\n  'سبتمبر',\r\n  'أكتوبر',\r\n  'نوفمبر',\r\n  'ديسمبر'\r\n];\r\n\r\nexport const arLocale: LocaleData = {\r\n  abbr: 'ar',\r\n  months,\r\n  monthsShort: months,\r\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\r\n  weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\r\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'D/\\u200FM/\\u200FYYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY HH:mm',\r\n    LLLL: 'dddd D MMMM YYYY HH:mm'\r\n  },\r\n  meridiemParse: /ص|م/,\r\n  isPM(input) {\r\n    return 'م' === input;\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    if (hour < 12) {\r\n      return 'ص';\r\n    } else {\r\n      return 'م';\r\n    }\r\n  },\r\n  calendar: {\r\n    sameDay: '[اليوم عند الساعة] LT',\r\n    nextDay: '[غدًا عند الساعة] LT',\r\n    nextWeek: 'dddd [عند الساعة] LT',\r\n    lastDay: '[أمس عند الساعة] LT',\r\n    lastWeek: 'dddd [عند الساعة] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'بعد %s',\r\n    past: 'منذ %s',\r\n    s: pluralize('s'),\r\n    ss: pluralize('s'),\r\n    m: pluralize('m'),\r\n    mm: pluralize('m'),\r\n    h: pluralize('h'),\r\n    hh: pluralize('h'),\r\n    d: pluralize('d'),\r\n    dd: pluralize('d'),\r\n    M: pluralize('M'),\r\n    MM: pluralize('M'),\r\n    y: pluralize('y'),\r\n    yy: pluralize('y')\r\n  },\r\n  preparse(str: string): string {\r\n    return str.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\r\n      return numberMap[match];\r\n    }).replace(/،/g, ',');\r\n  },\r\n  postformat(str: string) {\r\n    return str.replace(/\\d/g, function (match) {\r\n      return symbolMap[match];\r\n    }).replace(/,/g, '،');\r\n  },\r\n  week: {\r\n    dow: 6, // Saturday is the first day of the week.\r\n    doy: 12  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { Khronos } from '../testing/chain';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Bulgarian [bg]\r\n//! author : Iskren Ivov Chernev : https://github.com/ichernev\r\n//! author : Kunal Marwaha : https://github.com/marwahaha\r\n//! author : Matt Grande : https://github.com/mattgrande\r\n//! author : Isaac Cambron : https://github.com/icambron\r\n//! author : Venelin Manchev : https://github.com/vmanchev\r\n\r\nexport const bgLocale: LocaleData = {\r\n  abbr: 'bg',\r\n  months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\r\n  monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\r\n  weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\r\n  weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\r\n  weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'D.MM.YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY H:mm',\r\n    LLLL: 'dddd, D MMMM YYYY H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Днес в] LT',\r\n    nextDay: '[Утре в] LT',\r\n    nextWeek: 'dddd [в] LT',\r\n    lastDay: '[Вчера в] LT',\r\n    lastWeek: function (d: any) {\r\n\r\n      switch (d) {\r\n        case 0:\r\n        case 3:\r\n        case 6:\r\n          return '[В изминалата] dddd [в] LT';\r\n        case 1:\r\n        case 2:\r\n        case 4:\r\n        case 5:\r\n          return '[В изминалия] dddd [в] LT';\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'след %s',\r\n    past: 'преди %s',\r\n    s: 'няколко секунди',\r\n    ss: '%d секунди',\r\n    m: 'минута',\r\n    mm: '%d минути',\r\n    h: 'час',\r\n    hh: '%d часа',\r\n    d: 'ден',\r\n    dd: '%d дни',\r\n    M: 'месец',\r\n    MM: '%d месеца',\r\n    y: 'година',\r\n    yy: '%d години'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\r\n  ordinal: function (_num: number): string {\r\n\r\n    const number = Number(_num);\r\n\r\n    let lastDigit = number % 10,\r\n      last2Digits = number % 100;\r\n\r\n    if (number === 0) {\r\n      return number + '-ев';\r\n    } else if (last2Digits === 0) {\r\n      return number + '-ен';\r\n    } else if (last2Digits > 10 && last2Digits < 20) {\r\n      return number + '-ти';\r\n    } else if (lastDigit === 1) {\r\n      return number + '-ви';\r\n    } else if (lastDigit === 2) {\r\n      return number + '-ри';\r\n    } else if (lastDigit === 7 || lastDigit === 8) {\r\n      return number + '-ми';\r\n    } else {\r\n      return number + '-ти';\r\n    }\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 7  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getHours, getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Catalan [ca]\r\n//! author : Xavier Arbat : https://github.com/XavisaurusRex\r\n\r\nlet monthsShortDot = 'gen._feb._mar._abr._mai._jun._jul._ago._set._oct._nov._des.'.split('_'),\r\n  monthsShort = 'ene_feb_mar_abr_mai_jun_jul_ago_set_oct_nov_des'.split('_');\r\n\r\nlet monthsParse = [/^gen/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^jun/i, /^jul/i, /^ago/i, /^set/i, /^oct/i, /^nov/i, /^des/i];\r\nlet monthsRegex = /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre|gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i;\r\n\r\nexport const caLocale: LocaleData = {\r\n  abbr: 'ca',\r\n  months: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\r\n  monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortDot;\r\n    }\r\n\r\n    if (/-MMM-/.test(format)) {\r\n      return monthsShort[getMonth(date, isUTC)];\r\n    }\r\n\r\n    return monthsShortDot[getMonth(date, isUTC)];\r\n  },\r\n  monthsRegex,\r\n  monthsShortRegex: monthsRegex,\r\n  monthsStrictRegex: /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i,\r\n  monthsShortStrictRegex: /^(gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i,\r\n  monthsParse,\r\n  longMonthsParse: monthsParse,\r\n  shortMonthsParse: monthsParse,\r\n  weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\r\n  weekdaysShort: 'diu._dil._dim._dix._dij._div._dis.'.split('_'),\r\n  weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D [de] MMMM [de] YYYY',\r\n    LLL: 'D [de] MMMM [de] YYYY H:mm',\r\n    LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay(date: Date) {\r\n      return '[avui a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\r\n    },\r\n    nextDay(date: Date) {\r\n      return '[dema a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\r\n    },\r\n    nextWeek(date: Date) {\r\n      return 'dddd [a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\r\n    },\r\n    lastDay(date: Date) {\r\n      return '[ahir a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\r\n    },\r\n    lastWeek(date: Date) {\r\n      return '[el] dddd [' + ('passada la ' + (getHours(date) !== 1) ? 'passades les' : '') + '] LT';\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'en %s',\r\n    past: 'fa %s',\r\n    s: 'uns segons',\r\n    ss: '%d segons',\r\n    m: 'un minut',\r\n    mm: '%d minuts',\r\n    h: 'una hora',\r\n    hh: '%d hores',\r\n    d: 'un dia',\r\n    dd: '%d dies',\r\n    M: 'un mes',\r\n    MM: '%d mesos',\r\n    y: 'un any',\r\n    yy: '%d anys'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(er|on|er|rt|é)/,\r\n  ordinal(_num: number): string {\r\n    const num = Number(_num);\r\n    const output = (num > 4) ? 'é' :\r\n        (num === 1 || num === 3) ? 'r' :\r\n          (num === 2) ? 'n' :\r\n            (num === 4) ? 't' : 'é';\r\n    return num + output;\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Czech [cs]\r\n//! author : petrbela : https://github.com/petrbela\r\n\r\nconst months: string[] = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\r\nconst monthsShort: string[] = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\r\n\r\nfunction plural(num: number): boolean {\r\n  return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\r\n}\r\n\r\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\r\n  const result = num + ' ';\r\n\r\n  switch (key) {\r\n    case 's':  // a few seconds / in a few seconds / a few seconds ago\r\n      return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\r\n    case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'sekundy' : 'sekund');\r\n      } else {\r\n        return result + 'sekundami';\r\n      }\r\n    // break;\r\n    case 'm':  // a minute / in a minute / a minute ago\r\n      return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\r\n    case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'minuty' : 'minut');\r\n      } else {\r\n        return result + 'minutami';\r\n      }\r\n    // break;\r\n    case 'h':  // an hour / in an hour / an hour ago\r\n      return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\r\n    case 'hh': // 9 hours / in 9 hours / 9 hours ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'hodiny' : 'hodin');\r\n      } else {\r\n        return result + 'hodinami';\r\n      }\r\n    // break;\r\n    case 'd':  // a day / in a day / a day ago\r\n      return (withoutSuffix || isFuture) ? 'den' : 'dnem';\r\n    case 'dd': // 9 days / in 9 days / 9 days ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'dny' : 'dní');\r\n      } else {\r\n        return result + 'dny';\r\n      }\r\n    // break;\r\n    case 'M':  // a month / in a month / a month ago\r\n      return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\r\n    case 'MM': // 9 months / in 9 months / 9 months ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'měsíce' : 'měsíců');\r\n      } else {\r\n        return result + 'měsíci';\r\n      }\r\n    // break;\r\n    case 'y':  // a year / in a year / a year ago\r\n      return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\r\n    case 'yy': // 9 years / in 9 years / 9 years ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'roky' : 'let');\r\n      } else {\r\n        return result + 'lety';\r\n      }\r\n    // break;\r\n  }\r\n}\r\n\r\nexport const csLocale: LocaleData = {\r\n  abbr: 'cs',\r\n  months,\r\n  monthsShort,\r\n  monthsParse: (function (months, monthsShort) {\r\n    let i, _monthsParse = [];\r\n    for (i = 0; i < 12; i++) {\r\n      // use custom parser to solve problem with July (červenec)\r\n      _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\r\n    }\r\n    return _monthsParse;\r\n  }(months, monthsShort)),\r\n  shortMonthsParse: (function (monthsShort) {\r\n    let i, _shortMonthsParse = [];\r\n    for (i = 0; i < 12; i++) {\r\n      _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\r\n    }\r\n    return _shortMonthsParse;\r\n  }(monthsShort)),\r\n  longMonthsParse: (function (months) {\r\n    let i, _longMonthsParse = [];\r\n    for (i = 0; i < 12; i++) {\r\n      _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\r\n    }\r\n    return _longMonthsParse;\r\n  }(months)),\r\n  weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\r\n  weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\r\n  weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D. MMMM YYYY',\r\n    LLL: 'D. MMMM YYYY H:mm',\r\n    LLLL: 'dddd D. MMMM YYYY H:mm',\r\n    l: 'D. M. YYYY'\r\n  },\r\n  calendar: {\r\n    sameDay: '[dnes v] LT',\r\n    nextDay: '[zítra v] LT',\r\n    nextWeek(date: Date): string {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[v neděli v] LT';\r\n        case 1:\r\n        case 2:\r\n          return '[v] dddd [v] LT';\r\n        case 3:\r\n          return '[ve středu v] LT';\r\n        case 4:\r\n          return '[ve čtvrtek v] LT';\r\n        case 5:\r\n          return '[v pátek v] LT';\r\n        case 6:\r\n          return '[v sobotu v] LT';\r\n      }\r\n    },\r\n    lastDay: '[včera v] LT',\r\n    lastWeek(date: Date): string {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[minulou neděli v] LT';\r\n        case 1:\r\n        case 2:\r\n          return '[minulé] dddd [v] LT';\r\n        case 3:\r\n          return '[minulou středu v] LT';\r\n        case 4:\r\n        case 5:\r\n          return '[minulý] dddd [v] LT';\r\n        case 6:\r\n          return '[minulou sobotu v] LT';\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'za %s',\r\n    past: 'před %s',\r\n    s: translate,\r\n    ss: translate,\r\n    m: translate,\r\n    mm: translate,\r\n    h: translate,\r\n    hh: translate,\r\n    d: translate,\r\n    dd: translate,\r\n    M: translate,\r\n    MM: translate,\r\n    y: translate,\r\n    yy: translate\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal: '%d.',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Danish (Denmark) [da]\r\n//! author : Per Hansen : https://github.com/perhp\r\n\r\nexport const daLocale: LocaleData = {\r\n  abbr: 'da',\r\n  months : 'Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December'.split('_'),\r\n  monthsShort : 'Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec'.split('_'),\r\n  weekdays : 'Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag'.split('_'),\r\n  weekdaysShort : 'Søn_Man_Tir_Ons_Tor_Fre_Lør'.split('_'),\r\n  weekdaysMin : 'Sø_Ma_Ti_On_To_Fr_Lø'.split('_'),\r\n  longDateFormat : {\r\n      LT : 'HH:mm',\r\n      LTS : 'HH:mm:ss',\r\n      L : 'DD/MM/YYYY',\r\n      LL : 'D. MMMM YYYY',\r\n      LLL : 'D. MMMM YYYY HH:mm',\r\n      LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\r\n  },\r\n  calendar : {\r\n      sameDay : '[i dag kl.] LT',\r\n      nextDay : '[i morgen kl.] LT',\r\n      nextWeek : 'på dddd [kl.] LT',\r\n      lastDay : '[i går kl.] LT',\r\n      lastWeek : '[i] dddd[s kl.] LT',\r\n      sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n      future : 'om %s',\r\n      past : '%s siden',\r\n      s : 'få sekunder',\r\n      m : 'et minut',\r\n      mm : '%d minutter',\r\n      h : 'en time',\r\n      hh : '%d timer',\r\n      d : 'en dag',\r\n      dd : '%d dage',\r\n      M : 'en måned',\r\n      MM : '%d måneder',\r\n      y : 'et år',\r\n      yy : '%d år'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal : '%d.',\r\n  week : {\r\n      dow : 1, // Monday is the first day of the week.\r\n      doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : German [de]\r\n//! author : lluchs : https://github.com/lluchs\r\n//! author: Menelion Elensúle: https://github.com/Oire\r\n//! author : Mikolaj Dadela : https://github.com/mik01aj\r\n\r\nfunction processRelativeTime(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\r\n  const format: { [key: string]: [string, string] } = {\r\n    'm': ['eine Minute', 'einer Minute'],\r\n    'h': ['eine Stunde', 'einer Stunde'],\r\n    'd': ['ein Tag', 'einem Tag'],\r\n    'dd': [num + ' Tage', num + ' Tagen'],\r\n    'M': ['ein Monat', 'einem Monat'],\r\n    'MM': [num + ' Monate', num + ' Monaten'],\r\n    'y': ['ein Jahr', 'einem Jahr'],\r\n    'yy': [num + ' Jahre', num + ' Jahren']\r\n  };\r\n  return withoutSuffix ? format[key][0] : format[key][1];\r\n}\r\n\r\nexport const deLocale: LocaleData = {\r\n  abbr: 'de',\r\n  months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\r\n  monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\r\n  weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\r\n  weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D. MMMM YYYY',\r\n    LLL: 'D. MMMM YYYY HH:mm',\r\n    LLLL: 'dddd, D. MMMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[heute um] LT [Uhr]',\r\n    sameElse: 'L',\r\n    nextDay: '[morgen um] LT [Uhr]',\r\n    nextWeek: 'dddd [um] LT [Uhr]',\r\n    lastDay: '[gestern um] LT [Uhr]',\r\n    lastWeek: '[letzten] dddd [um] LT [Uhr]'\r\n  },\r\n  relativeTime: {\r\n    future: 'in %s',\r\n    past: 'vor %s',\r\n    s: 'ein paar Sekunden',\r\n    ss: '%d Sekunden',\r\n    m: processRelativeTime,\r\n    mm: '%d Minuten',\r\n    h: processRelativeTime,\r\n    hh: '%d Stunden',\r\n    d: processRelativeTime,\r\n    dd: processRelativeTime,\r\n    M: processRelativeTime,\r\n    MM: processRelativeTime,\r\n    y: processRelativeTime,\r\n    yy: processRelativeTime\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal: '%d.',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : English (United Kingdom) [en-gb]\r\n//! author : Chris Gedrim : https://github.com/chrisgedrim\r\n\r\nexport const enGbLocale: LocaleData = {\r\n  abbr: 'en-gb',\r\n  months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\r\n  monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\r\n  weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\r\n  weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\r\n  weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'HH:mm',\r\n    LTS : 'HH:mm:ss',\r\n    L : 'DD/MM/YYYY',\r\n    LL : 'D MMMM YYYY',\r\n    LLL : 'D MMMM YYYY HH:mm',\r\n    LLLL : 'dddd, D MMMM YYYY HH:mm'\r\n  },\r\n  calendar : {\r\n    sameDay : '[Today at] LT',\r\n    nextDay : '[Tomorrow at] LT',\r\n    nextWeek : 'dddd [at] LT',\r\n    lastDay : '[Yesterday at] LT',\r\n    lastWeek : '[Last] dddd [at] LT',\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future : 'in %s',\r\n    past : '%s ago',\r\n    s : 'a few seconds',\r\n    ss : '%d seconds',\r\n    m : 'a minute',\r\n    mm : '%d minutes',\r\n    h : 'an hour',\r\n    hh : '%d hours',\r\n    d : 'a day',\r\n    dd : '%d days',\r\n    M : 'a month',\r\n    MM : '%d months',\r\n    y : 'a year',\r\n    yy : '%d years'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\r\n  ordinal(_num: number): string {\r\n    const num = Number(_num);\r\n    const b = num % 10,\r\n      output = (~~(num % 100 / 10) === 1) ? 'th' :\r\n        (b === 1) ? 'st' :\r\n          (b === 2) ? 'nd' :\r\n            (b === 3) ? 'rd' : 'th';\r\n    return num + output;\r\n  },\r\n  week : {\r\n    dow : 1, // Monday is the first day of the week.\r\n    doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getHours, getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Spanish (Dominican Republic) [es-do]\r\n\r\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\r\n  monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\r\n\r\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\r\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\r\n\r\nexport const esDoLocale: LocaleData = {\r\n  abbr: 'es-do',\r\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\r\n  monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortDot;\r\n    } else if (/-MMM-/.test(format)) {\r\n      return monthsShort[getMonth(date, isUTC)];\r\n    } else {\r\n      return monthsShortDot[getMonth(date, isUTC)];\r\n    }\r\n  },\r\n  monthsRegex,\r\n  monthsShortRegex: monthsRegex,\r\n  monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\r\n  monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\r\n  monthsParse,\r\n  longMonthsParse: monthsParse,\r\n  shortMonthsParse: monthsParse,\r\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\r\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\r\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'h:mm A',\r\n    LTS: 'h:mm:ss A',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D [de] MMMM [de] YYYY',\r\n    LLL: 'D [de] MMMM [de] YYYY h:mm A',\r\n    LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\r\n  },\r\n  calendar: {\r\n    sameDay(date: Date): string {\r\n      return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextDay(date: Date): string {\r\n      return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextWeek(date: Date): string {\r\n      return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastDay(date: Date): string {\r\n      return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastWeek(date: Date): string {\r\n      return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'en %s',\r\n    past: 'hace %s',\r\n    s: 'unos segundos',\r\n    ss: '%d segundos',\r\n    m: 'un minuto',\r\n    mm: '%d minutos',\r\n    h: 'una hora',\r\n    hh: '%d horas',\r\n    d: 'un día',\r\n    dd: '%d días',\r\n    M: 'un mes',\r\n    MM: '%d meses',\r\n    y: 'un año',\r\n    yy: '%d años'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}º/,\r\n  ordinal: '%dº',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getHours, getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Spanish [es]\r\n//! author : Julio Napurí : https://github.com/julionc\r\n\r\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\r\n  monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\r\n\r\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\r\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\r\n\r\nexport const esLocale: LocaleData = {\r\n  abbr: 'es',\r\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\r\n  monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortDot;\r\n    }\r\n\r\n    if (/-MMM-/.test(format)) {\r\n      return monthsShort[getMonth(date, isUTC)];\r\n    }\r\n\r\n    return monthsShortDot[getMonth(date, isUTC)];\r\n  },\r\n  monthsRegex,\r\n  monthsShortRegex: monthsRegex,\r\n  monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\r\n  monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\r\n  monthsParse,\r\n  longMonthsParse: monthsParse,\r\n  shortMonthsParse: monthsParse,\r\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\r\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\r\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D [de] MMMM [de] YYYY',\r\n    LLL: 'D [de] MMMM [de] YYYY H:mm',\r\n    LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay(date: Date) {\r\n      return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextDay(date: Date) {\r\n      return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextWeek(date: Date) {\r\n      return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastDay(date: Date) {\r\n      return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastWeek(date: Date) {\r\n      return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'en %s',\r\n    past: 'hace %s',\r\n    s: 'unos segundos',\r\n    ss: '%d segundos',\r\n    m: 'un minuto',\r\n    mm: '%d minutos',\r\n    h: 'una hora',\r\n    hh: '%d horas',\r\n    d: 'un día',\r\n    dd: '%d días',\r\n    M: 'un mes',\r\n    MM: '%d meses',\r\n    y: 'un año',\r\n    yy: '%d años'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}º/,\r\n  ordinal: '%dº',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getHours, getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Spanish (Puerto Rico) [es-pr]\r\n\r\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\r\nlet monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\r\n\r\nexport const esPrLocale: LocaleData = {\r\n  abbr: 'es-pr',\r\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\r\n  monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortDot;\r\n    } else if (/-MMM-/.test(format)) {\r\n      return monthsShort[getMonth(date, isUTC)];\r\n    } else {\r\n      return monthsShortDot[getMonth(date, isUTC)];\r\n    }\r\n  },\r\n  monthsParseExact: true,\r\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\r\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\r\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'h:mm A',\r\n    LTS: 'h:mm:ss A',\r\n    L: 'MM/DD/YYYY',\r\n    LL: 'D [de] MMMM [de] YYYY',\r\n    LLL: 'D [de] MMMM [de] YYYY h:mm A',\r\n    LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\r\n  },\r\n  calendar: {\r\n    sameDay(date: Date): string {\r\n      return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextDay(date: Date): string {\r\n      return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextWeek(date: Date): string {\r\n      return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastDay(date: Date): string {\r\n      return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastWeek(date: Date): string {\r\n      return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'en %s',\r\n    past: 'hace %s',\r\n    s: 'unos segundos',\r\n    ss: '%d segundos',\r\n    m: 'un minuto',\r\n    mm: '%d minutos',\r\n    h: 'una hora',\r\n    hh: '%d horas',\r\n    d: 'un día',\r\n    dd: '%d días',\r\n    M: 'un mes',\r\n    MM: '%d meses',\r\n    y: 'un año',\r\n    yy: '%d años'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}º/,\r\n  ordinal: '%dº',\r\n  week: {\r\n    dow: 0, // Sunday is the first day of the week.\r\n    doy: 6  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getHours, getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Spanish (United States) [es-us]\r\n//! author : bustta : https://github.com/bustta\r\n\r\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\r\nlet monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\r\n\r\nexport const esUsLocale: LocaleData = {\r\n  abbr: 'es-us',\r\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\r\n  monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortDot;\r\n    } else if (/-MMM-/.test(format)) {\r\n      return monthsShort[getMonth(date, isUTC)];\r\n    } else {\r\n      return monthsShortDot[getMonth(date, isUTC)];\r\n    }\r\n  },\r\n  monthsParseExact: true,\r\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\r\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\r\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'h:mm A',\r\n    LTS: 'h:mm:ss A',\r\n    L: 'MM/DD/YYYY',\r\n    LL: 'MMMM [de] D [de] YYYY',\r\n    LLL: 'MMMM [de] D [de] YYYY h:mm A',\r\n    LLLL: 'dddd, MMMM [de] D [de] YYYY h:mm A'\r\n  },\r\n  calendar: {\r\n    sameDay(date: Date): string {\r\n      return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextDay(date: Date): string {\r\n      return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextWeek(date: Date): string {\r\n      return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastDay(date: Date): string {\r\n      return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastWeek(date: Date): string {\r\n      return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'en %s',\r\n    past: 'hace %s',\r\n    s: 'unos segundos',\r\n    ss: '%d segundos',\r\n    m: 'un minuto',\r\n    mm: '%d minutos',\r\n    h: 'una hora',\r\n    hh: '%d horas',\r\n    d: 'un día',\r\n    dd: '%d días',\r\n    M: 'un mes',\r\n    MM: '%d meses',\r\n    y: 'un año',\r\n    yy: '%d años'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}º/,\r\n  ordinal: '%dº',\r\n  week: {\r\n    dow: 0, // Sunday is the first day of the week.\r\n    doy: 6  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Estonian [et]\r\n//! author : Chris Gedrim : https://github.com/a90machado\r\n\r\nconst processRelativeTime = function (num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\r\n  const format = {\r\n      s : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\r\n      ss: [num + 'sekundi', num + 'sekundit'],\r\n      m : ['ühe minuti', 'üks minut'],\r\n      mm: [num + ' minuti', num + ' minutit'],\r\n      h : ['ühe tunni', 'tund aega', 'üks tund'],\r\n      hh: [num + ' tunni', num + ' tundi'],\r\n      d : ['ühe päeva', 'üks päev'],\r\n      M : ['kuu aja', 'kuu aega', 'üks kuu'],\r\n      MM: [num + ' kuu', num + ' kuud'],\r\n      y : ['ühe aasta', 'aasta', 'üks aasta'],\r\n      yy: [num + ' aasta', num + ' aastat']\r\n  };\r\n  if (withoutSuffix) {\r\n      return format[key][2] ? format[key][2] : format[key][1];\r\n  }\r\n  return isFuture ? format[key][0] : format[key][1];\r\n};\r\n\r\nexport const etLocale: LocaleData = {\r\n  abbr: 'et',\r\n  months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\r\n  monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\r\n  weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\r\n  weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\r\n  weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\r\n  longDateFormat: {\r\n    LT:   'H:mm',\r\n    LTS:  'H:mm:ss',\r\n    L:    'DD.MM.YYYY',\r\n    LL:   'D. MMMM YYYY',\r\n    LLL:  'D. MMMM YYYY H:mm',\r\n    LLLL: 'dddd, D. MMMM YYYY H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay:  '[Täna,] LT',\r\n    nextDay:  '[Homme,] LT',\r\n    nextWeek: '[Järgmine] dddd LT',\r\n    lastDay:  '[Eile,] LT',\r\n    lastWeek: '[Eelmine] dddd LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime : {\r\n    future : '%s pärast',\r\n    past   : '%s tagasi',\r\n    s      : processRelativeTime,\r\n    ss     : processRelativeTime,\r\n    m      : processRelativeTime,\r\n    mm     : processRelativeTime,\r\n    h      : processRelativeTime,\r\n    hh     : processRelativeTime,\r\n    d      : processRelativeTime,\r\n    dd     : '%d päeva',\r\n    M      : processRelativeTime,\r\n    MM     : processRelativeTime,\r\n    y      : processRelativeTime,\r\n    yy     : processRelativeTime\r\n  },\r\n  dayOfMonthOrdinalParse : /\\d{1,2}./,\r\n  ordinal : '%d.',\r\n  week : {\r\n      dow : 1, // Monday is the first day of the week.\r\n      doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n// https://github.com/moment/moment/blob/develop/locale/fi.js\r\n\r\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\r\n  numbersFuture = [\r\n    'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\r\n    numbersPast[7], numbersPast[8], numbersPast[9]\r\n  ];\r\n\r\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\r\n  var result = '';\r\n  switch (key) {\r\n    case 's':\r\n      return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\r\n    case 'ss':\r\n      return isFuture ? 'sekunnin' : 'sekuntia';\r\n    case 'm':\r\n      return isFuture ? 'minuutin' : 'minuutti';\r\n    case 'mm':\r\n      result = isFuture ? 'minuutin' : 'minuuttia';\r\n      break;\r\n    case 'h':\r\n      return isFuture ? 'tunnin' : 'tunti';\r\n    case 'hh':\r\n      result = isFuture ? 'tunnin' : 'tuntia';\r\n      break;\r\n    case 'd':\r\n      return isFuture ? 'päivän' : 'päivä';\r\n    case 'dd':\r\n      result = isFuture ? 'päivän' : 'päivää';\r\n      break;\r\n    case 'M':\r\n      return isFuture ? 'kuukauden' : 'kuukausi';\r\n    case 'MM':\r\n      result = isFuture ? 'kuukauden' : 'kuukautta';\r\n      break;\r\n    case 'y':\r\n      return isFuture ? 'vuoden' : 'vuosi';\r\n    case 'yy':\r\n      result = isFuture ? 'vuoden' : 'vuotta';\r\n      break;\r\n  }\r\n  result = verbalNumber(num, isFuture) + ' ' + result;\r\n  return result;\r\n}\r\n\r\nfunction verbalNumber(num: number, isFuture: boolean) {\r\n  return num < 10 ? (isFuture ? numbersFuture[num] : numbersPast[num]) : num;\r\n}\r\n\r\nexport const fiLocale: LocaleData = {\r\n  abbr: 'fi',\r\n  months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\r\n  monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\r\n  weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\r\n  weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\r\n  weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH.mm',\r\n    LTS: 'HH.mm.ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'Do MMMM[ta] YYYY',\r\n    LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\r\n    LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\r\n    l: 'D.M.YYYY',\r\n    ll: 'Do MMM YYYY',\r\n    lll: 'Do MMM YYYY, [klo] HH.mm',\r\n    llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[tänään] [klo] LT',\r\n    nextDay: '[huomenna] [klo] LT',\r\n    nextWeek: 'dddd [klo] LT',\r\n    lastDay: '[eilen] [klo] LT',\r\n    lastWeek: '[viime] dddd[na] [klo] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: '%s päästä',\r\n    past: '%s sitten',\r\n    s: translate,\r\n    ss: translate,\r\n    m: translate,\r\n    mm: translate,\r\n    h: translate,\r\n    hh: translate,\r\n    d: translate,\r\n    dd: translate,\r\n    M: translate,\r\n    MM: translate,\r\n    y: translate,\r\n    yy: translate\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal: '%d.',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : French [fr]\r\n//! author : John Fischer : https://github.com/jfroffice\r\n\r\nexport const frLocale: LocaleData = {\r\n  abbr: 'fr',\r\n  months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\r\n  monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\r\n  weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\r\n  weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY HH:mm',\r\n    LLLL: 'dddd D MMMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Aujourd’hui à] LT',\r\n    nextDay: '[Demain à] LT',\r\n    nextWeek: 'dddd [à] LT',\r\n    lastDay: '[Hier à] LT',\r\n    lastWeek: 'dddd [dernier à] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'dans %s',\r\n    past: 'il y a %s',\r\n    s: 'quelques secondes',\r\n    ss: '%d secondes',\r\n    m: 'une minute',\r\n    mm: '%d minutes',\r\n    h: 'une heure',\r\n    hh: '%d heures',\r\n    d: 'un jour',\r\n    dd: '%d jours',\r\n    M: 'un mois',\r\n    MM: '%d mois',\r\n    y: 'un an',\r\n    yy: '%d ans'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\r\n  ordinal(_num: number, period: string): string {\r\n    const num = Number(_num);\r\n    switch (period) {\r\n      // TODO: Return 'e' when day of month > 1. Move this case inside\r\n      // block for masculine words below.\r\n      // See https://github.com/moment/moment/issues/3375\r\n      case 'D':\r\n        return num + (num === 1 ? 'er' : '');\r\n\r\n      // Words with masculine grammatical gender: mois, trimestre, jour\r\n      default:\r\n      case 'M':\r\n      case 'Q':\r\n      case 'DDD':\r\n      case 'd':\r\n        return num + (num === 1 ? 'er' : 'e');\r\n\r\n      // Words with feminine grammatical gender: semaine\r\n      case 'w':\r\n      case 'W':\r\n        return num + (num === 1 ? 're' : 'e');\r\n    }\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getHours, getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Galician [gl]\r\n//! author : Darío Beiró : https://github.com/quinobravo\r\n\r\nlet monthsShortDot = 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\r\n  monthsShort = 'xan_feb_mar_abr_mai_xuñ_xul_ago_set_out_nov_dec'.split('_');\r\n\r\nlet monthsParse = [/^xan/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^xuñ/i, /^xul/i, /^ago/i, /^set/i, /^out/i, /^nov/i, /^dec/i];\r\nlet monthsRegex = /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro|xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i;\r\n\r\nexport const glLocale: LocaleData = {\r\n  abbr: 'gl',\r\n  months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\r\n  monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortDot;\r\n    }\r\n\r\n    if (/-MMM-/.test(format)) {\r\n      return monthsShort[getMonth(date, isUTC)];\r\n    }\r\n\r\n    return monthsShortDot[getMonth(date, isUTC)];\r\n  },\r\n  monthsRegex,\r\n  monthsShortRegex: monthsRegex,\r\n  monthsStrictRegex: /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro)/i,\r\n  monthsShortStrictRegex: /^(xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i,\r\n  monthsParse,\r\n  longMonthsParse: monthsParse,\r\n  shortMonthsParse: monthsParse,\r\n  weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\r\n  weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\r\n  weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D [de] MMMM [de] YYYY',\r\n    LLL: 'D [de] MMMM [de] YYYY H:mm',\r\n    LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay(date: Date) {\r\n      return '[hoxe á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextDay(date: Date) {\r\n      return '[mañan á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    nextWeek(date: Date) {\r\n      return 'dddd [á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastDay(date: Date) {\r\n      return '[onte á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    lastWeek(date: Date) {\r\n      return '[o] dddd [pasado á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'en %s',\r\n    past: 'fai %s',\r\n    s: 'uns segundos',\r\n    ss: '%d segundos',\r\n    m: 'un minuto',\r\n    mm: '%d minutos',\r\n    h: 'unha hora',\r\n    hh: '%d horas',\r\n    d: 'un día',\r\n    dd: '%d días',\r\n    M: 'un mes',\r\n    MM: '%d meses',\r\n    y: 'un ano',\r\n    yy: '%d anos'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}º/,\r\n  ordinal: '%dº',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Hebrew [he]\r\n//! author : Tomer Cohen : https://github.com/tomer\r\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\r\n//! author : Tal Ater : https://github.com/TalAter\r\n\r\nexport const heLocale: LocaleData = {\r\n  abbr: 'he',\r\n  months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\r\n  monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\r\n  weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\r\n  weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\r\n  weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D [ב]MMMM YYYY',\r\n    LLL: 'D [ב]MMMM YYYY HH:mm',\r\n    LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\r\n    l: 'D/M/YYYY',\r\n    ll: 'D MMM YYYY',\r\n    lll: 'D MMM YYYY HH:mm',\r\n    llll: 'ddd, D MMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[היום ב־]LT',\r\n    nextDay: '[מחר ב־]LT',\r\n    nextWeek: 'dddd [בשעה] LT',\r\n    lastDay: '[אתמול ב־]LT',\r\n    lastWeek: '[ביום] dddd [האחרון בשעה] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'בעוד %s',\r\n    past: 'לפני %s',\r\n    s: 'מספר שניות',\r\n    ss: '%d שניות',\r\n    m: 'דקה',\r\n    mm: '%d דקות',\r\n    h: 'שעה',\r\n    hh(num: number): string {\r\n      if (num === 2) {\r\n        return 'שעתיים';\r\n      }\r\n      return num + ' שעות';\r\n    },\r\n    d: 'יום',\r\n    dd(num: number): string {\r\n      if (num === 2) {\r\n        return 'יומיים';\r\n      }\r\n      return num + ' ימים';\r\n    },\r\n    M: 'חודש',\r\n    MM(num: number): string {\r\n      if (num === 2) {\r\n        return 'חודשיים';\r\n      }\r\n      return num + ' חודשים';\r\n    },\r\n    y: 'שנה',\r\n    yy(num: number): string {\r\n      if (num === 2) {\r\n        return 'שנתיים';\r\n      } else if (num % 10 === 0 && num !== 10) {\r\n        return num + ' שנה';\r\n      }\r\n      return num + ' שנים';\r\n    }\r\n  },\r\n  meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\r\n  isPM(input) {\r\n    return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    if (hour < 5) {\r\n      return 'לפנות בוקר';\r\n    } else if (hour < 10) {\r\n      return 'בבוקר';\r\n    } else if (hour < 12) {\r\n      return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\r\n    } else if (hour < 18) {\r\n      return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\r\n    } else {\r\n      return 'בערב';\r\n    }\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Hindi [hi]\r\n//! author : Mayank Singhal : https://github.com/mayanksinghal\r\n\r\nlet symbolMap: {[key: string]: string} = {\r\n    1: '१',\r\n    2: '२',\r\n    3: '३',\r\n    4: '४',\r\n    5: '५',\r\n    6: '६',\r\n    7: '७',\r\n    8: '८',\r\n    9: '९',\r\n    0: '०'\r\n  },\r\n  numberMap: {[key: string]: string} = {\r\n    '१': '1',\r\n    '२': '2',\r\n    '३': '3',\r\n    '४': '4',\r\n    '५': '5',\r\n    '६': '6',\r\n    '७': '7',\r\n    '८': '8',\r\n    '९': '9',\r\n    '०': '0'\r\n  };\r\n\r\nexport const hiLocale: LocaleData = {\r\n  abbr: 'hi',\r\n  months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\r\n  monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\r\n  weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\r\n  weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'A h:mm बजे',\r\n    LTS: 'A h:mm:ss बजे',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY, A h:mm बजे',\r\n    LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\r\n  },\r\n  calendar: {\r\n    sameDay: '[आज] LT',\r\n    nextDay: '[कल] LT',\r\n    nextWeek: 'dddd, LT',\r\n    lastDay: '[कल] LT',\r\n    lastWeek: '[पिछले] dddd, LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: '%s में',\r\n    past: '%s पहले',\r\n    s: 'कुछ ही क्षण',\r\n    ss: '%d सेकंड',\r\n    m: 'एक मिनट',\r\n    mm: '%d मिनट',\r\n    h: 'एक घंटा',\r\n    hh: '%d घंटे',\r\n    d: 'एक दिन',\r\n    dd: '%d दिन',\r\n    M: 'एक महीने',\r\n    MM: '%d महीने',\r\n    y: 'एक वर्ष',\r\n    yy: '%d वर्ष'\r\n  },\r\n  preparse(str: string): string {\r\n    return str.replace(/[१२३४५६७८९०]/g, function (match) {\r\n      return numberMap[match];\r\n    });\r\n  },\r\n  postformat(str: string): string {\r\n    return str.replace(/\\d/g, function (match) {\r\n      return symbolMap[match];\r\n    });\r\n  },\r\n  // Hindi notation for meridiems are quite fuzzy in practice. While there exists\r\n  // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\r\n  meridiemParse: /रात|सुबह|दोपहर|शाम/,\r\n  meridiemHour(hour, meridiem) {\r\n    if (hour === 12) {\r\n      hour = 0;\r\n    }\r\n    if (meridiem === 'रात') {\r\n      return hour < 4 ? hour : hour + 12;\r\n    } else if (meridiem === 'सुबह') {\r\n      return hour;\r\n    } else if (meridiem === 'दोपहर') {\r\n      return hour >= 10 ? hour : hour + 12;\r\n    } else if (meridiem === 'शाम') {\r\n      return hour + 12;\r\n    }\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    if (hour < 4) {\r\n      return 'रात';\r\n    } else if (hour < 10) {\r\n      return 'सुबह';\r\n    } else if (hour < 17) {\r\n      return 'दोपहर';\r\n    } else if (hour < 20) {\r\n      return 'शाम';\r\n    } else {\r\n      return 'रात';\r\n    }\r\n  },\r\n  week: {\r\n    dow: 0, // Sunday is the first day of the week.\r\n    doy: 6  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Hungarian [hu]\r\n//! author : Adam Brunner : https://github.com/adambrunner\r\n\r\nlet weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\r\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\r\n  switch (key) {\r\n    case 's':\r\n      return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\r\n    case 'ss':\r\n      return num + ((isFuture || withoutSuffix) ? ' másodperc' : ' másodperce');\r\n    case 'm':\r\n      return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\r\n    case 'mm':\r\n      return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\r\n    case 'h':\r\n      return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\r\n    case 'hh':\r\n      return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\r\n    case 'd':\r\n      return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\r\n    case 'dd':\r\n      return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\r\n    case 'M':\r\n      return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\r\n    case 'MM':\r\n      return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\r\n    case 'y':\r\n      return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\r\n    case 'yy':\r\n      return num + (isFuture || withoutSuffix ? ' év' : ' éve');\r\n  }\r\n  return '';\r\n}\r\nfunction week(date: Date, isFuture: boolean) {\r\n  return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[getDayOfWeek(date)] + '] LT[-kor]';\r\n}\r\n\r\nexport const huLocale: LocaleData = {\r\n  abbr: 'hu',\r\n  months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\r\n  monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\r\n  weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\r\n  weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\r\n  weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'H:mm',\r\n    LTS : 'H:mm:ss',\r\n    L : 'YYYY.MM.DD.',\r\n    LL : 'YYYY. MMMM D.',\r\n    LLL : 'YYYY. MMMM D. H:mm',\r\n    LLLL : 'YYYY. MMMM D., dddd H:mm'\r\n  },\r\n  meridiemParse: /de|du/i,\r\n  isPM (input) {\r\n    return input.charAt(1).toLowerCase() === 'u';\r\n  },\r\n  meridiem (hours, minutes, isLower) {\r\n    if (hours < 12) {\r\n      return isLower === true ? 'de' : 'DE';\r\n    } else {\r\n      return isLower === true ? 'du' : 'DU';\r\n    }\r\n  },\r\n  calendar : {\r\n    sameDay : '[ma] LT[-kor]',\r\n    nextDay : '[holnap] LT[-kor]',\r\n    nextWeek (date: Date) {\r\n      return week(date, true);\r\n    },\r\n    lastDay : '[tegnap] LT[-kor]',\r\n    lastWeek (date: Date) {\r\n      return week(date, false);\r\n    },\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future : '%s múlva',\r\n    past : '%s',\r\n    s : translate,\r\n    ss : translate,\r\n    m : translate,\r\n    mm : translate,\r\n    h : translate,\r\n    hh : translate,\r\n    d : translate,\r\n    dd : translate,\r\n    M : translate,\r\n    MM : translate,\r\n    y : translate,\r\n    yy : translate\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal : '%d.',\r\n  week : {\r\n    dow : 1, // Monday is the first day of the week.\r\n    doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Croatian [hr]\r\n//! author : Danijel Grmec : https://github.com/cobaltsis\r\n\r\nexport const hrLocale: LocaleData = {\r\n  abbr: 'hr',\r\n  months: 'Siječanj_Veljača_Ožujak_Travanj_Svibanj_Lipanj_Srpanj_Kolovoz_Rujan_Listopad_Studeni_Prosinac'.split('_'),\r\n  monthsShort: 'Sij_Velj_Ožu_Tra_Svi_Lip_Srp_Kol_Ruj_Lis_Stu_Pro'.split('_'),\r\n  weekdays: 'Nedjelja_Ponedjeljak_Utorak_Srijeda_Četvrtak_Petak_Subota'.split('_'),\r\n  weekdaysShort: 'Ned_Pon_Uto_Sri_Čet_Pet_Sub'.split('_'),\r\n  weekdaysMin: 'Ne_Po_Ut_Sr_Če_Pe_Su'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY HH:mm',\r\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Danas u] LT',\r\n    nextDay: '[Sutra u] LT',\r\n    nextWeek: 'dddd [u] LT',\r\n    lastDay: '[Jučer u] LT',\r\n    lastWeek: '[Zadnji] dddd [u] LT',\r\n    sameElse: 'L'\r\n  },\r\n  invalidDate: 'Neispravan datum',\r\n  relativeTime: {\r\n    future: 'za %s',\r\n    past: '%s prije',\r\n    s: 'nekoliko sekundi',\r\n    ss: '%d sekundi',\r\n    m: 'minuta',\r\n    mm: '%d minuta',\r\n    h: 'sat',\r\n    hh: '%d sati',\r\n    d: 'dan',\r\n    dd: '%d dana',\r\n    M: 'mjesec',\r\n    MM: '%d mjeseci',\r\n    y: 'godina',\r\n    yy: '%d godina'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\r\n  ordinal(_num: number): string {\r\n    const num = Number(_num);\r\n    const b = num % 10,\r\n      output = (~~(num % 100 / 10) === 1) ? '.' :\r\n        (b === 1) ? '.' :\r\n          (b === 2) ? '.' :\r\n            (b === 3) ? '.' : '.';\r\n    return num + output;\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Indonesia [id]\r\n//! author : Romy Kusuma : https://github.com/rkusuma\r\n//! reference: https://github.com/moment/moment/blob/develop/locale/id.js\r\n\r\nexport const idLocale: LocaleData = {\r\n  abbr: 'id',\r\n  months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\r\n  monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\r\n  weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\r\n  weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\r\n  weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'HH.mm',\r\n    LTS : 'HH.mm.ss',\r\n    L : 'DD/MM/YYYY',\r\n    LL : 'D MMMM YYYY',\r\n    LLL : 'D MMMM YYYY [pukul] HH.mm',\r\n    LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\r\n  },\r\n  meridiemParse: /pagi|siang|sore|malam/,\r\n  meridiemHour(hour, meridiem) {\r\n    if (hour === 12) {\r\n      hour = 0;\r\n    }\r\n    if (meridiem === 'pagi') {\r\n      return hour;\r\n    } else if (meridiem === 'siang') {\r\n      return hour >= 11 ? hour : hour + 12;\r\n    } else if (meridiem === 'sore' || meridiem === 'malam') {\r\n      return hour + 12;\r\n    }\r\n  },\r\n  meridiem(hours, minutes, isLower) {\r\n    if (hours < 11) {\r\n      return 'pagi';\r\n    } else if (hours < 15) {\r\n      return 'siang';\r\n    } else if (hours < 19) {\r\n      return 'sore';\r\n    } else {\r\n      return 'malam';\r\n    }\r\n  },\r\n  calendar : {\r\n    sameDay : '[Hari ini pukul] LT',\r\n    nextDay : '[Besok pukul] LT',\r\n    nextWeek : 'dddd [pukul] LT',\r\n    lastDay : '[Kemarin pukul] LT',\r\n    lastWeek : 'dddd [lalu pukul] LT',\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future : 'dalam %s',\r\n    past : '%s yang lalu',\r\n    s : 'beberapa detik',\r\n    ss : '%d detik',\r\n    m : 'semenit',\r\n    mm : '%d menit',\r\n    h : 'sejam',\r\n    hh : '%d jam',\r\n    d : 'sehari',\r\n    dd : '%d hari',\r\n    M : 'sebulan',\r\n    MM : '%d bulan',\r\n    y : 'setahun',\r\n    yy : '%d tahun'\r\n  },\r\n  week : {\r\n    dow : 1, // Monday is the first day of the week.\r\n    doy : 7  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Italian [it]\r\n//! author : Lorenzo : https://github.com/aliem\r\n//! author: Mattia Larentis: https://github.com/nostalgiaz\r\n\r\nexport const itLocale: LocaleData = {\r\n  abbr: 'it',\r\n  months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\r\n  monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\r\n  weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\r\n  weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\r\n  weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY HH:mm',\r\n    LLLL: 'dddd D MMMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Oggi alle] LT',\r\n    nextDay: '[Domani alle] LT',\r\n    nextWeek: 'dddd [alle] LT',\r\n    lastDay: '[Ieri alle] LT',\r\n    lastWeek(date: Date) {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[la scorsa] dddd [alle] LT';\r\n        default:\r\n          return '[lo scorso] dddd [alle] LT';\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future(num: number): string {\r\n      return ((/^[0-9].+$/).test(num.toString(10)) ? 'tra' : 'in') + ' ' + num;\r\n    },\r\n    past: '%s fa',\r\n    s: 'alcuni secondi',\r\n    ss: '%d secondi',\r\n    m: 'un minuto',\r\n    mm: '%d minuti',\r\n    h: 'un\\'ora',\r\n    hh: '%d ore',\r\n    d: 'un giorno',\r\n    dd: '%d giorni',\r\n    M: 'un mese',\r\n    MM: '%d mesi',\r\n    y: 'un anno',\r\n    yy: '%d anni'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}º/,\r\n  ordinal: '%dº',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Japanese [ja]\r\n//! author : LI Long : https://github.com/baryon\r\n\r\nexport const jaLocale: LocaleData =  {\r\n  abbr: 'ja',\r\n  months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\r\n  monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\r\n  weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\r\n  weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\r\n  weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'HH:mm',\r\n    LTS : 'HH:mm:ss',\r\n    L : 'YYYY/MM/DD',\r\n    LL : 'YYYY年M月D日',\r\n    LLL : 'YYYY年M月D日 HH:mm',\r\n    LLLL : 'YYYY年M月D日 HH:mm dddd',\r\n    l : 'YYYY/MM/DD',\r\n    ll : 'YYYY年M月D日',\r\n    lll : 'YYYY年M月D日 HH:mm',\r\n    llll : 'YYYY年M月D日 HH:mm dddd'\r\n  },\r\n  meridiemParse: /午前|午後/i,\r\n  isPM (input) {\r\n    return input === '午後';\r\n  },\r\n  meridiem (hour, minute, isLower) {\r\n    if (hour < 12) {\r\n      return '午前';\r\n    } else {\r\n      return '午後';\r\n    }\r\n  },\r\n  calendar : {\r\n    sameDay : '[今日] LT',\r\n    nextDay : '[明日] LT',\r\n    nextWeek : '[来週]dddd LT',\r\n    lastDay : '[昨日] LT',\r\n    lastWeek : '[前週]dddd LT',\r\n    sameElse : 'L'\r\n  },\r\n  dayOfMonthOrdinalParse : /\\d{1,2}日/,\r\n  ordinal (num: number, period: string): string {\r\n    switch (period) {\r\n      case 'd':\r\n      case 'D':\r\n      case 'DDD':\r\n        return num + '日';\r\n      default:\r\n        return num.toString(10);\r\n    }\r\n  },\r\n  relativeTime : {\r\n    future : '%s後',\r\n    past : '%s前',\r\n    s : '数秒',\r\n    ss : '%d秒',\r\n    m : '1分',\r\n    mm : '%d分',\r\n    h : '1時間',\r\n    hh : '%d時間',\r\n    d : '1日',\r\n    dd : '%d日',\r\n    M : '1ヶ月',\r\n    MM : '%dヶ月',\r\n    y : '1年',\r\n    yy : '%d年'\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Georgian [ka]\r\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\r\n//! author : Levan Tskipuri : https://github.com/tskipa\r\n\r\nexport const kaLocale: LocaleData =  {\r\n  abbr: 'ka',\r\n  months : {\r\n    format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_'),\r\n    standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_')\r\n  },\r\n  monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\r\n  weekdays : {\r\n    standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\r\n    format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\r\n    isFormat: /(წინა|შემდეგ)/\r\n  },\r\n  weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\r\n  weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'h:mm A',\r\n    LTS : 'h:mm:ss A',\r\n    L : 'DD/MM/YYYY',\r\n    LL : 'D MMMM YYYY',\r\n    LLL : 'D MMMM YYYY h:mm A',\r\n    LLLL : 'dddd, D MMMM YYYY h:mm A'\r\n  },\r\n  calendar : {\r\n    sameDay : '[დღეს] LT[-ზე]',\r\n    nextDay : '[ხვალ] LT[-ზე]',\r\n    lastDay : '[გუშინ] LT[-ზე]',\r\n    nextWeek : '[შემდეგ] dddd LT[-ზე]',\r\n    lastWeek : '[წინა] dddd LT-ზე',\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future(s: number): string {\r\n      var st = s.toString();\r\n      return (/(წამი|წუთი|საათი|წელი)/).test(st) ?\r\n      st.replace(/ი$/, 'ში') :\r\n      st + 'ში';\r\n    },\r\n    past(s: number): string {\r\n      var st = s.toString();\r\n      if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(st)) {\r\n        return st.replace(/(ი|ე)$/, 'ის წინ');\r\n      }\r\n      if ((/წელი/).test(st)) {\r\n        return st.replace(/წელი$/, 'წლის წინ');\r\n      }\r\n    },\r\n    s : 'რამდენიმე წამი',\r\n    ss : '%d წამი',\r\n    m : 'წუთი',\r\n    mm : '%d წუთი',\r\n    h : 'საათი',\r\n    hh : '%d საათი',\r\n    d : 'დღე',\r\n    dd : '%d დღე',\r\n    M : 'თვე',\r\n    MM : '%d თვე',\r\n    y : 'წელი',\r\n    yy : '%d წელი'\r\n  },\r\n  dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\r\n  ordinal(_num: number, _period: string): string {\r\n    const num = Number(_num);\r\n    if (num === 0) {\r\n      return num.toString();\r\n    }\r\n    if (num === 1) {\r\n      return num + '-ლი';\r\n    }\r\n    if ((num < 20) || (num <= 100 && (num % 20 === 0)) || (num % 100 === 0)) {\r\n      return 'მე-' + num;\r\n    }\r\n    return num + '-ე';\r\n  },\r\n  week : {\r\n    dow : 1,\r\n    doy : 4\r\n  }\r\n};\r\n","// ! moment.js locale configuration\r\n// ! locale : Kazakh [kk]\r\n// ! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\r\n\r\nimport { LocaleData } from '..';\r\n\r\nconst suffixes = {\r\n  0: '-ші',\r\n  1: '-ші',\r\n  2: '-ші',\r\n  3: '-ші',\r\n  4: '-ші',\r\n  5: '-ші',\r\n  6: '-шы',\r\n  7: '-ші',\r\n  8: '-ші',\r\n  9: '-шы',\r\n  10: '-шы',\r\n  20: '-шы',\r\n  30: '-шы',\r\n  40: '-шы',\r\n  50: '-ші',\r\n  60: '-шы',\r\n  70: '-ші',\r\n  80: '-ші',\r\n  90: '-шы',\r\n  100: '-ші'\r\n};\r\n\r\nexport const kkLocale: LocaleData = {\r\n  abbr: 'kk',\r\n  months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\r\n  monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\r\n  weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\r\n  weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\r\n  weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'HH:mm',\r\n    LTS : 'HH:mm:ss',\r\n    L : 'DD.MM.YYYY',\r\n    LL : 'D MMMM YYYY',\r\n    LLL : 'D MMMM YYYY HH:mm',\r\n    LLLL : 'dddd, D MMMM YYYY HH:mm'\r\n  },\r\n  calendar : {\r\n    sameDay : '[Бүгін сағат] LT',\r\n    nextDay : '[Ертең сағат] LT',\r\n    nextWeek : 'dddd [сағат] LT',\r\n    lastDay : '[Кеше сағат] LT',\r\n    lastWeek : '[Өткен аптаның] dddd [сағат] LT',\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future : '%s ішінде',\r\n    past : '%s бұрын',\r\n    s : 'бірнеше секунд',\r\n    ss : '%d секунд',\r\n    m : 'бір минут',\r\n    mm : '%d минут',\r\n    h : 'бір сағат',\r\n    hh : '%d сағат',\r\n    d : 'бір күн',\r\n    dd : '%d күн',\r\n    M : 'бір ай',\r\n    MM : '%d ай',\r\n    y : 'бір жыл',\r\n    yy : '%d жыл'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\r\n  ordinal(_num: number): string {\r\n    const a = _num % 10;\r\n    const b = _num >= 100 ? 100 : null;\r\n\r\n    return _num + (suffixes[_num] || suffixes[a] || suffixes[b]);\r\n  },\r\n  week : {\r\n    dow : 1, // Monday is the first day of the week.\r\n    doy : 7  // The week that contains Jan 7th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Korean [ko]\r\n//! author : Kyungwook, Park : https://github.com/kyungw00k\r\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\r\n\r\nexport const koLocale: LocaleData = {\r\n  abbr: 'ko',\r\n  months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\r\n  monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\r\n  weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\r\n  weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\r\n  weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'A h:mm',\r\n    LTS : 'A h:mm:ss',\r\n    L : 'YYYY.MM.DD',\r\n    LL : 'YYYY년 MMMM D일',\r\n    LLL : 'YYYY년 MMMM D일 A h:mm',\r\n    LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\r\n    l : 'YYYY.MM.DD',\r\n    ll : 'YYYY년 MMMM D일',\r\n    lll : 'YYYY년 MMMM D일 A h:mm',\r\n    llll : 'YYYY년 MMMM D일 dddd A h:mm'\r\n  },\r\n  calendar : {\r\n    sameDay : '오늘 LT',\r\n    nextDay : '내일 LT',\r\n    nextWeek : 'dddd LT',\r\n    lastDay : '어제 LT',\r\n    lastWeek : '지난주 dddd LT',\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future : '%s 후',\r\n    past : '%s 전',\r\n    s : '몇 초',\r\n    ss : '%d초',\r\n    m : '1분',\r\n    mm : '%d분',\r\n    h : '한 시간',\r\n    hh : '%d시간',\r\n    d : '하루',\r\n    dd : '%d일',\r\n    M : '한 달',\r\n    MM : '%d달',\r\n    y : '일 년',\r\n    yy : '%d년'\r\n  },\r\n  dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\r\n  ordinal : function (num: number, period: string): string {\r\n    switch (period) {\r\n      case 'd':\r\n      case 'D':\r\n      case 'DDD':\r\n        return num + '일';\r\n      case 'M':\r\n        return num + '월';\r\n      case 'w':\r\n      case 'W':\r\n        return num + '주';\r\n      default:\r\n        return num.toString(10);\r\n    }\r\n  },\r\n  meridiemParse : /오전|오후/,\r\n  isPM : function (token) {\r\n    return token === '오후';\r\n  },\r\n  meridiem : function (hour, minute, isUpper) {\r\n    return hour < 12 ? '오전' : '오후';\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Lithuanian [lt]\r\n//! author : Stanislavas Guk : https://github.com/ixoster\r\n\r\nconst units = {\r\n  ss : 'sekundė_sekundžių_sekundes',\r\n  m : 'minutė_minutės_minutę',\r\n  mm: 'minutės_minučių_minutes',\r\n  h : 'valanda_valandos_valandą',\r\n  hh: 'valandos_valandų_valandas',\r\n  d : 'diena_dienos_dieną',\r\n  dd: 'dienos_dienų_dienas',\r\n  M : 'mėnuo_mėnesio_mėnesį',\r\n  MM: 'mėnesiai_mėnesių_mėnesius',\r\n  y : 'metai_metų_metus',\r\n  yy: 'metai_metų_metus'\r\n};\r\nfunction translateSeconds(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\r\n  if (withoutSuffix) {\r\n      return 'kelios sekundės';\r\n  } else {\r\n      return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\r\n  }\r\n}\r\nfunction translateSingular(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\r\n  return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\r\n}\r\nfunction special(num: number) {\r\n  return num % 10 === 0 || (num > 10 && num < 20);\r\n}\r\nfunction forms(key: string) {\r\n  return (units as any)[key].split('_');\r\n}\r\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\r\n  let result = num + ' ';\r\n  if (num === 1) {\r\n      return result + translateSingular(num, withoutSuffix, key[0], isFuture);\r\n  } else if (withoutSuffix) {\r\n      return result + (special(num) ? forms(key)[1] : forms(key)[0]);\r\n  } else {\r\n      if (isFuture) {\r\n          return result + forms(key)[1];\r\n      } else {\r\n          return result + (special(num) ? forms(key)[1] : forms(key)[2]);\r\n      }\r\n  }\r\n}\r\n\r\nexport const ltLocale: LocaleData = {\r\n  abbr: 'lt',\r\n  months : {\r\n    format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\r\n    standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\r\n    isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\r\n  },\r\n  monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\r\n  weekdays : {\r\n      format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\r\n      standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\r\n      isFormat: /dddd HH:mm/\r\n  },\r\n  weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\r\n  weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\r\n  weekdaysParseExact : true,\r\n  longDateFormat : {\r\n      LT : 'HH:mm',\r\n      LTS : 'HH:mm:ss',\r\n      L : 'YYYY-MM-DD',\r\n      LL : 'YYYY [m.] MMMM D [d.]',\r\n      LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\r\n      LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\r\n      l : 'YYYY-MM-DD',\r\n      ll : 'YYYY [m.] MMMM D [d.]',\r\n      lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\r\n      llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\r\n  },\r\n  calendar : {\r\n      sameDay : '[Šiandien] LT',\r\n      nextDay : '[Rytoj] LT',\r\n      nextWeek : 'dddd LT',\r\n      lastDay : '[Vakar] LT',\r\n      lastWeek : '[Praėjusį] dddd LT',\r\n      sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n      future : 'po %s',\r\n      past : 'prieš %s',\r\n      s : translateSeconds,\r\n      ss : translate,\r\n      m : translateSingular,\r\n      mm : translate,\r\n      h : translateSingular,\r\n      hh : translate,\r\n      d : translateSingular,\r\n      dd : translate,\r\n      M : translateSingular,\r\n      MM : translate,\r\n      y : translateSingular,\r\n      yy : translate\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\r\n  ordinal(num) {\r\n      return num + '-oji';\r\n  },\r\n  week : {\r\n      dow : 1, // Monday is the first day of the week.\r\n      doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Latvian [lv]\r\n//! author : Matiss Janis Aboltins : https://github.com/matissjanis\r\n\r\nexport const lvLocale: LocaleData = {\r\n  abbr: 'lv',\r\n  months : 'Janvāris_Februāris_Marts_Aprīlis_Maijs_Jūnijs_Jūlijs_Augusts_Septembris_Oktobris_Novembris_Decembris'.split('_'),\r\n  monthsShort : 'Jan_Feb_Mar_Apr_Mai_Jūn_Jūl_Aug_Sep_Okt_Nov_Dec'.split('_'),\r\n  weekdays : 'Svētdiena_Pirmdiena_Otrdiena_Trešdiena_Ceturtdiena_Piektdiena_Sestdiena'.split('_'),\r\n  weekdaysShort : 'Svētd_Pirmd_Otrd_Trešd_Ceturtd_Piektd_Sestd'.split('_'),\r\n  weekdaysMin : 'Sv_Pi_Ot_Tr_Ce_Pk_Se'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'HH:mm',\r\n    LTS : 'HH:mm:ss',\r\n    L : 'DD/MM/YYYY',\r\n    LL : 'D MMMM YYYY',\r\n    LLL : 'D MMMM YYYY HH:mm',\r\n    LLLL : 'dddd, D MMMM YYYY HH:mm'\r\n  },\r\n  calendar : {\r\n    sameDay : '[Today at] LT',\r\n    nextDay : '[Tomorrow at] LT',\r\n    nextWeek : 'dddd [at] LT',\r\n    lastDay : '[Yesterday at] LT',\r\n    lastWeek : '[Last] dddd [at] LT',\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future : 'pēc %s',\r\n    past : 'pirms %s',\r\n    s : 'dažām sekundēm',\r\n    ss : '%d sekundēm',\r\n    m : 'minūtes',\r\n    mm : '%d minūtēm',\r\n    h : 'stundas',\r\n    hh : '%d stundām',\r\n    d : 'dienas',\r\n    dd : '%d dienām',\r\n    M : 'mēneša',\r\n    MM : '%d mēnešiem',\r\n    y : 'gada',\r\n    yy : '%d gadiem'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal(num) {\r\n      return num + '.';\r\n  },\r\n  week : {\r\n    dow : 1, // Monday is the first day of the week.\r\n    doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Mongolian [mn]\r\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\r\n\r\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\r\n  switch (key) {\r\n    case 's':\r\n      return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\r\n    case 'ss':\r\n      return num + (withoutSuffix ? ' секунд' : ' секундын');\r\n    case 'm':\r\n    case 'mm':\r\n      return num + (withoutSuffix ? ' минут' : ' минутын');\r\n    case 'h':\r\n    case 'hh':\r\n      return num + (withoutSuffix ? ' цаг' : ' цагийн');\r\n    case 'd':\r\n    case 'dd':\r\n      return num + (withoutSuffix ? ' өдөр' : ' өдрийн');\r\n    case 'M':\r\n    case 'MM':\r\n      return num + (withoutSuffix ? ' сар' : ' сарын');\r\n    case 'y':\r\n    case 'yy':\r\n      return num + (withoutSuffix ? ' жил' : ' жилийн');\r\n    default:\r\n      return num.toString(10);\r\n  }\r\n}\r\n\r\nexport const mnLocale: LocaleData = {\r\n  abbr: 'mn',\r\n  months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\r\n  monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\r\n  weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\r\n  weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'YYYY-MM-DD',\r\n    LL: 'YYYY оны MMMMын D',\r\n    LLL: 'YYYY оны MMMMын D HH:mm',\r\n    LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\r\n  },\r\n  meridiemParse: /ҮӨ|ҮХ/i,\r\n  isPM: function (input) {\r\n    return input === 'ҮХ';\r\n  },\r\n  meridiem: function (hour, minute, isLower) {\r\n    if (hour < 12) {\r\n      return 'ҮӨ';\r\n    } else {\r\n      return 'ҮХ';\r\n    }\r\n  },\r\n  calendar: {\r\n    sameDay: '[Өнөөдөр] LT',\r\n    nextDay: '[Маргааш] LT',\r\n    nextWeek: '[Ирэх] dddd LT',\r\n    lastDay: '[Өчигдөр] LT',\r\n    lastWeek: '[Өнгөрсөн] dddd LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: '%s дараа',\r\n    past: '%s өмнө',\r\n    s: translate,\r\n    ss: translate,\r\n    m: translate,\r\n    mm: translate,\r\n    h: translate,\r\n    hh: translate,\r\n    d: translate,\r\n    dd: translate,\r\n    M: translate,\r\n    MM: translate,\r\n    y: translate,\r\n    yy: translate\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\r\n  ordinal: function (num: number, period: string): string {\r\n    switch (period) {\r\n      case 'd':\r\n      case 'D':\r\n      case 'DDD':\r\n        return num + ' өдөр';\r\n      default:\r\n        return num.toString(10);\r\n    }\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Norwegian Bokmål [nb]\r\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\r\n//!           Sigurd Gartmann : https://github.com/sigurdga\r\n\r\nexport const nbLocale: LocaleData = {\r\n  abbr: 'nb',\r\n  months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\r\n  monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\r\n  weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\r\n  weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D. MMMM YYYY',\r\n    LLL: 'D. MMMM YYYY [kl.] HH:mm',\r\n    LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[i dag kl.] LT',\r\n    nextDay: '[i morgen kl.] LT',\r\n    nextWeek: 'dddd [kl.] LT',\r\n    lastDay: '[i går kl.] LT',\r\n    lastWeek: '[forrige] dddd [kl.] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'om %s',\r\n    past: '%s siden',\r\n    s: 'noen sekunder',\r\n    ss: '%d sekunder',\r\n    m: 'ett minutt',\r\n    mm: '%d minutter',\r\n    h: 'en time',\r\n    hh: '%d timer',\r\n    d: 'en dag',\r\n    dd: '%d dager',\r\n    M: 'en måned',\r\n    MM: '%d måneder',\r\n    y: 'ett år',\r\n    yy: '%d år'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal: '%d.',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4 // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Dutch (Belgium) [nl-be]\r\n//! author : Joris Röling : https://github.com/jorisroling\r\n//! author : Jacob Middag : https://github.com/middagj\r\n\r\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\r\nlet monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\r\n\r\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\r\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\r\n\r\nexport const nlBeLocale: LocaleData = {\r\n  abbr: 'nl-be',\r\n  months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\r\n  monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortWithDots;\r\n    } else if (/-MMM-/.test(format)) {\r\n      return monthsShortWithoutDots[getMonth(date, isUTC)];\r\n    } else {\r\n      return monthsShortWithDots[getMonth(date, isUTC)];\r\n    }\r\n  },\r\n\r\n  monthsRegex,\r\n  monthsShortRegex: monthsRegex,\r\n  monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\r\n  monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\r\n\r\n  monthsParse,\r\n  longMonthsParse: monthsParse,\r\n  shortMonthsParse: monthsParse,\r\n\r\n  weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\r\n  weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\r\n  weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY HH:mm',\r\n    LLLL: 'dddd D MMMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[vandaag om] LT',\r\n    nextDay: '[morgen om] LT',\r\n    nextWeek: 'dddd [om] LT',\r\n    lastDay: '[gisteren om] LT',\r\n    lastWeek: '[afgelopen] dddd [om] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'over %s',\r\n    past: '%s geleden',\r\n    s: 'een paar seconden',\r\n    ss: '%d seconden',\r\n    m: 'één minuut',\r\n    mm: '%d minuten',\r\n    h: 'één uur',\r\n    hh: '%d uur',\r\n    d: 'één dag',\r\n    dd: '%d dagen',\r\n    M: 'één maand',\r\n    MM: '%d maanden',\r\n    y: 'één jaar',\r\n    yy: '%d jaar'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\r\n  ordinal(_num: number): string {\r\n    const num = Number(_num);\r\n    return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getMonth } from '../utils/date-getters';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Dutch [nl]\r\n//! author : Joris Röling : https://github.com/jorisroling\r\n//! author : Jacob Middag : https://github.com/middagj\r\n\r\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\r\n  monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\r\n\r\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\r\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\r\n\r\nexport const nlLocale: LocaleData = {\r\n  abbr: 'nl',\r\n  months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\r\n  monthsShort (date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsShortWithDots;\r\n    } else if (/-MMM-/.test(format)) {\r\n      return monthsShortWithoutDots[getMonth(date, isUTC)];\r\n    } else {\r\n      return monthsShortWithDots[getMonth(date, isUTC)];\r\n    }\r\n  },\r\n\r\n  monthsRegex,\r\n  monthsShortRegex: monthsRegex,\r\n  monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\r\n  monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\r\n\r\n  monthsParse,\r\n  longMonthsParse : monthsParse,\r\n  shortMonthsParse : monthsParse,\r\n\r\n  weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\r\n  weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\r\n  weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\r\n  weekdaysParseExact : true,\r\n  longDateFormat : {\r\n    LT : 'HH:mm',\r\n    LTS : 'HH:mm:ss',\r\n    L : 'DD-MM-YYYY',\r\n    LL : 'D MMMM YYYY',\r\n    LLL : 'D MMMM YYYY HH:mm',\r\n    LLLL : 'dddd D MMMM YYYY HH:mm'\r\n  },\r\n  calendar : {\r\n    sameDay: '[vandaag om] LT',\r\n    nextDay: '[morgen om] LT',\r\n    nextWeek: 'dddd [om] LT',\r\n    lastDay: '[gisteren om] LT',\r\n    lastWeek: '[afgelopen] dddd [om] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime : {\r\n    future : 'over %s',\r\n    past : '%s geleden',\r\n    s : 'een paar seconden',\r\n    ss : '%d seconden',\r\n    m : 'één minuut',\r\n    mm : '%d minuten',\r\n    h : 'één uur',\r\n    hh : '%d uur',\r\n    d : 'één dag',\r\n    dd : '%d dagen',\r\n    M : 'één maand',\r\n    MM : '%d maanden',\r\n    y : 'één jaar',\r\n    yy : '%d jaar'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\r\n  ordinal (_num: number): string {\r\n    const num = Number(_num);\r\n    return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\r\n  },\r\n  week : {\r\n    dow : 1, // Monday is the first day of the week.\r\n    doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getMonth } from '../utils/date-getters';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Polish [pl]\r\n//! author : Rafal Hirsz : https://github.com/evoL\r\n\r\nlet monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\r\nlet monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\r\n\r\nfunction plural(num: number): boolean {\r\n  return (num % 10 < 5) && (num % 10 > 1) && ((~~(num / 10) % 10) !== 1);\r\n}\r\n\r\nfunction translate(num: number, withoutSuffix: boolean, key: string): string {\r\n  let result = num + ' ';\r\n  switch (key) {\r\n    case 'ss':\r\n      return result + (plural(num) ? 'sekundy' : 'sekund');\r\n    case 'm':\r\n      return withoutSuffix ? 'minuta' : 'minutę';\r\n    case 'mm':\r\n      return result + (plural(num) ? 'minuty' : 'minut');\r\n    case 'h':\r\n      return withoutSuffix ? 'godzina' : 'godzinę';\r\n    case 'hh':\r\n      return result + (plural(num) ? 'godziny' : 'godzin');\r\n    case 'MM':\r\n      return result + (plural(num) ? 'miesiące' : 'miesięcy');\r\n    case 'yy':\r\n      return result + (plural(num) ? 'lata' : 'lat');\r\n  }\r\n}\r\n\r\nexport const plLocale: LocaleData = {\r\n  abbr: 'pl',\r\n  months(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n    if (!date) {\r\n      return monthsNominative;\r\n    } else if (format === '') {\r\n      // Hack: if format empty we know this is used to generate\r\n      // RegExp by moment. Give then back both valid forms of months\r\n      // in RegExp ready format.\r\n      return '(' + monthsSubjective[getMonth(date, isUTC)] + '|' + monthsNominative[getMonth(date, isUTC)] + ')';\r\n    } else if (/D MMMM/.test(format)) {\r\n      return monthsSubjective[getMonth(date, isUTC)];\r\n    } else {\r\n      return monthsNominative[getMonth(date, isUTC)];\r\n    }\r\n  },\r\n  monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\r\n  weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\r\n  weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\r\n  weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY HH:mm',\r\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Dziś o] LT',\r\n    nextDay: '[Jutro o] LT',\r\n    nextWeek(date: Date): string {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[W niedzielę o] LT';\r\n\r\n        case 2:\r\n          return '[We wtorek o] LT';\r\n\r\n        case 3:\r\n          return '[W środę o] LT';\r\n\r\n        case 5:\r\n          return '[W piątek o] LT';\r\n\r\n        case 6:\r\n          return '[W sobotę o] LT';\r\n\r\n        default:\r\n          return '[W] dddd [o] LT';\r\n      }\r\n    },\r\n    lastDay: '[Wczoraj o] LT',\r\n    lastWeek(date: Date): string {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[W zeszłą niedzielę o] LT';\r\n        case 3:\r\n          return '[W zeszłą środę o] LT';\r\n        case 4:\r\n          return '[W zeszłą czwartek o] LT';\r\n        case 5:\r\n          return '[W zeszłą piątek o] LT';\r\n        case 6:\r\n          return '[W zeszłą sobotę o] LT';\r\n        default:\r\n          return '[W zeszły] dddd [o] LT';\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'za %s',\r\n    past: '%s temu',\r\n    s: 'kilka sekund',\r\n    ss: translate,\r\n    m: translate,\r\n    mm: translate,\r\n    h: translate,\r\n    hh: translate,\r\n    d: '1 dzień',\r\n    dd: '%d dni',\r\n    M: 'miesiąc',\r\n    MM: translate,\r\n    y: 'rok',\r\n    yy: translate\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal: '%d.',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Portuguese (Brazil) [pt-br]\r\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\r\n\r\nexport const ptBrLocale: LocaleData = {\r\n  abbr: 'pt-br',\r\n  months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\r\n  monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\r\n  weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\r\n  weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\r\n  weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D [de] MMMM [de] YYYY',\r\n    LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\r\n    LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Hoje às] LT',\r\n    nextDay: '[Amanhã às] LT',\r\n    nextWeek: 'dddd [às] LT',\r\n    lastDay: '[Ontem às] LT',\r\n    lastWeek(date: Date) {\r\n      return (getDayOfWeek(date) === 0 || getDayOfWeek(date) === 6) ?\r\n        '[Último] dddd [às] LT' : // Saturday + Sunday\r\n        '[Última] dddd [às] LT'; // Monday - Friday\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'em %s',\r\n    past: '%s atrás',\r\n    s: 'poucos segundos',\r\n    ss: '%d segundos',\r\n    m: 'um minuto',\r\n    mm: '%d minutos',\r\n    h: 'uma hora',\r\n    hh: '%d horas',\r\n    d: 'um dia',\r\n    dd: '%d dias',\r\n    M: 'um mês',\r\n    MM: '%d meses',\r\n    y: 'um ano',\r\n    yy: '%d anos'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}º/,\r\n  ordinal: '%dº'\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n// ! moment.js locale configuration\r\n// ! locale : Romanian [ro]\r\n//! author : Vlad Gurdiga : https://github.com/gurdiga\r\n//! author : Valentin Agachi : https://github.com/avaly\r\n// ! author : Earle white: https://github.com/5earle\r\n\r\nfunction relativeTimeWithPlural(num: number, withoutSuffix: boolean, key: string): string {\r\n  let format: {[key:string]: string} = {\r\n    ss: 'secunde',\r\n    mm: 'minute',\r\n    hh: 'ore',\r\n    dd: 'zile',\r\n    MM: 'luni',\r\n    yy: 'ani'\r\n  };\r\n\r\n  let separator = ' ';\r\n  if (num % 100 >= 20 || (num >= 100 && num % 100 === 0)) {\r\n    separator = ' de ';\r\n  }\r\n  return num + separator + format[key];\r\n}\r\n\r\n\r\nexport const roLocale: LocaleData = {\r\n  abbr: 'ro',\r\n  months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\r\n  monthsShort: 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\r\n  weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\r\n  weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY H:mm',\r\n    LLLL: 'dddd, D MMMM YYYY H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[azi la] LT',\r\n    nextDay: '[mâine la] LT',\r\n    nextWeek: 'dddd [la] LT',\r\n    lastDay: '[ieri la] LT',\r\n    lastWeek: '[fosta] dddd [la] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'peste %s',\r\n    past: '%s în urmă',\r\n    s: 'câteva secunde',\r\n    ss: relativeTimeWithPlural,\r\n    m: 'un minut',\r\n    mm: relativeTimeWithPlural,\r\n    h: 'o oră',\r\n    hh: relativeTimeWithPlural,\r\n    d: 'o zi',\r\n    dd: relativeTimeWithPlural,\r\n    M: 'o lună',\r\n    MM: relativeTimeWithPlural,\r\n    y: 'un an',\r\n    yy: relativeTimeWithPlural\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 7  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getWeek } from '../units/week';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Russian [ru]\r\n//! author : Viktorminator : https://github.com/Viktorminator\r\n//! Author : Menelion Elensúle : https://github.com/Oire\r\n//! author : Коренберг Марк : https://github.com/socketpair\r\n\r\nfunction plural(word: string, num: number): string {\r\n  let forms = word.split('_');\r\n  return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\r\n}\r\n\r\nfunction relativeTimeWithPlural(num: number, withoutSuffix: boolean, key: string): string {\r\n  let format: {[key: string]: string} = {\r\n    ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\r\n    mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\r\n    hh: 'час_часа_часов',\r\n    dd: 'день_дня_дней',\r\n    MM: 'месяц_месяца_месяцев',\r\n    yy: 'год_года_лет'\r\n  };\r\n  if (key === 'm') {\r\n    return withoutSuffix ? 'минута' : 'минуту';\r\n  }\r\n  return num + ' ' + plural(format[key], +num);\r\n}\r\n\r\nlet monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\r\n\r\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\r\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\r\n// CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\r\nexport const ruLocale: LocaleData = {\r\n  abbr: 'ru',\r\n  months: {\r\n    format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\r\n    standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\r\n  },\r\n  monthsShort: {\r\n    // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\r\n    format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\r\n    standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\r\n  },\r\n  weekdays: {\r\n    standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\r\n    format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\r\n    isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\r\n  },\r\n  weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\r\n  weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\r\n  monthsParse,\r\n  longMonthsParse: monthsParse,\r\n  shortMonthsParse: monthsParse,\r\n\r\n  // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\r\n  monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\r\n\r\n  // копия предыдущего\r\n  monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\r\n\r\n  // полные названия с падежами\r\n  monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\r\n\r\n  // Выражение, которое соотвествует только сокращённым формам\r\n  monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D MMMM YYYY г.',\r\n    LLL: 'D MMMM YYYY г., H:mm',\r\n    LLLL: 'dddd, D MMMM YYYY г., H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Сегодня в] LT',\r\n    nextDay: '[Завтра в] LT',\r\n    lastDay: '[Вчера в] LT',\r\n    nextWeek(date: Date, now: Date) {\r\n      if (getWeek(now) !== getWeek(date)) {\r\n        switch (getDayOfWeek(date)) {\r\n          case 0:\r\n            return '[В следующее] dddd [в] LT';\r\n          case 1:\r\n          case 2:\r\n          case 4:\r\n            return '[В следующий] dddd [в] LT';\r\n          case 3:\r\n          case 5:\r\n          case 6:\r\n            return '[В следующую] dddd [в] LT';\r\n        }\r\n      } else {\r\n        if (getDayOfWeek(date) === 2) {\r\n          return '[Во] dddd [в] LT';\r\n        } else {\r\n          return '[В] dddd [в] LT';\r\n        }\r\n      }\r\n    },\r\n    lastWeek(date: Date, now: Date) {\r\n      if (getWeek(now) !== getWeek(date)) {\r\n        switch (getDayOfWeek(date)) {\r\n          case 0:\r\n            return '[В прошлое] dddd [в] LT';\r\n          case 1:\r\n          case 2:\r\n          case 4:\r\n            return '[В прошлый] dddd [в] LT';\r\n          case 3:\r\n          case 5:\r\n          case 6:\r\n            return '[В прошлую] dddd [в] LT';\r\n        }\r\n      } else {\r\n        if (getDayOfWeek(date) === 2) {\r\n          return '[Во] dddd [в] LT';\r\n        } else {\r\n          return '[В] dddd [в] LT';\r\n        }\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'через %s',\r\n    past: '%s назад',\r\n    s: 'несколько секунд',\r\n    ss: relativeTimeWithPlural,\r\n    m: relativeTimeWithPlural,\r\n    mm: relativeTimeWithPlural,\r\n    h: 'час',\r\n    hh: relativeTimeWithPlural,\r\n    d: 'день',\r\n    dd: relativeTimeWithPlural,\r\n    M: 'месяц',\r\n    MM: relativeTimeWithPlural,\r\n    y: 'год',\r\n    yy: relativeTimeWithPlural\r\n  },\r\n  meridiemParse: /ночи|утра|дня|вечера/i,\r\n  isPM(input) {\r\n    return /^(дня|вечера)$/.test(input);\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    if (hour < 4) {\r\n      return 'ночи';\r\n    } else if (hour < 12) {\r\n      return 'утра';\r\n    } else if (hour < 17) {\r\n      return 'дня';\r\n    } else {\r\n      return 'вечера';\r\n    }\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\r\n  ordinal(_num: number, period: string): string {\r\n    const num = Number(_num);\r\n    switch (period) {\r\n      case 'M':\r\n      case 'd':\r\n      case 'DDD':\r\n        return num + '-й';\r\n      case 'D':\r\n        return num + '-го';\r\n      case 'w':\r\n      case 'W':\r\n        return num + '-я';\r\n      default:\r\n        return num.toString(10);\r\n    }\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Slovak [sk]\r\n//! author : Jozef Pažin : https://github.com/atiris\r\n\r\nconst months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\r\nconst monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\r\n\r\nfunction plural(num: number): boolean {\r\n  return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\r\n}\r\n\r\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\r\n  const result = num + ' ';\r\n\r\n  switch (key) {\r\n    case 's':// a few seconds / in a few seconds / a few seconds ago\r\n      return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\r\n    case 'ss':// 9 seconds / in 9 seconds / 9 seconds ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'sekundy' : 'sekúnd');\r\n      }\r\n      else {\r\n        return result + 'sekundami';\r\n      }\r\n    // break;\r\n    case 'm':// a minute / in a minute / a minute ago\r\n      return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\r\n    case 'mm':// 9 minutes / in 9 minutes / 9 minutes ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'minúty' : 'minút');\r\n      }\r\n      else {\r\n        return result + 'minútami';\r\n      }\r\n    // break;\r\n    case 'h':// an hour / in an hour / an hour ago\r\n      return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\r\n    case 'hh':// 9 hours / in 9 hours / 9 hours ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'hodiny' : 'hodín');\r\n      }\r\n      else {\r\n        return result + 'hodinami';\r\n      }\r\n    // break;\r\n    case 'd':// a day / in a day / a day ago\r\n      return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\r\n    case 'dd':// 9 days / in 9 days / 9 days ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'dni' : 'dní');\r\n      }\r\n      else {\r\n        return result + 'dňami';\r\n      }\r\n    // break;\r\n    case 'M':// a month / in a month / a month ago\r\n      return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\r\n    case 'MM':// 9 months / in 9 months / 9 months ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'mesiace' : 'mesiacov');\r\n      }\r\n      else {\r\n        return result + 'mesiacmi';\r\n      }\r\n    // break;\r\n    case 'y':// a year / in a year / a year ago\r\n      return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\r\n    case 'yy':// 9 years / in 9 years / 9 years ago\r\n      if (withoutSuffix || isFuture) {\r\n        return result + (plural(num) ? 'roky' : 'rokov');\r\n      }\r\n      else {\r\n        return result + 'rokmi';\r\n      }\r\n    // break;\r\n  }\r\n}\r\n\r\nexport const skLocale: LocaleData = {\r\n  abbr: 'sk',\r\n  months,\r\n  monthsShort,\r\n  weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\r\n  weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\r\n  weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D. MMMM YYYY',\r\n    LLL: 'D. MMMM YYYY H:mm',\r\n    LLLL: 'dddd D. MMMM YYYY H:mm',\r\n    l: 'D. M. YYYY'\r\n  },\r\n  calendar: {\r\n    sameDay: '[dnes o] LT',\r\n    nextDay: '[zajtra o] LT',\r\n    nextWeek(date: Date): string {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[v nedeľu o] LT';\r\n        case 1:\r\n        case 2:\r\n          return '[v] dddd [o] LT';\r\n        case 3:\r\n          return '[v stredu o] LT';\r\n        case 4:\r\n          return '[vo štvrtok o] LT';\r\n        case 5:\r\n          return '[v piatok o] LT';\r\n        case 6:\r\n          return '[v sobotu o] LT';\r\n      }\r\n    },\r\n    lastDay: '[včera o] LT',\r\n    lastWeek(date: Date): string {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[minulú nedeľu o] LT';\r\n        case 1:\r\n        case 2:\r\n          return '[minulý] dddd [o] LT';\r\n        case 3:\r\n          return '[minulú stredu o] LT';\r\n        case 4:\r\n        case 5:\r\n          return '[minulý] dddd [o] LT';\r\n        case 6:\r\n          return '[minulú sobotu o] LT';\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'o %s',\r\n    past: 'pred %s',\r\n    s: translate,\r\n    ss: translate,\r\n    m: translate,\r\n    mm: translate,\r\n    h: translate,\r\n    hh: translate,\r\n    d: translate,\r\n    dd: translate,\r\n    M: translate,\r\n    MM: translate,\r\n    y: translate,\r\n    yy: translate\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal: '%d.',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Slovenian [sl]\r\n//! author : mihan : https://github.com/mihan\r\n\r\nfunction processRelativeTime(number: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\r\n  var result = number + ' ';\r\n  switch (key) {\r\n    case 's':\r\n      return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\r\n    case 'ss':\r\n      if (number === 1) {\r\n        result += withoutSuffix ? 'sekundo' : 'sekundi';\r\n      } else if (number === 2) {\r\n        result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\r\n      } else if (number < 5) {\r\n        result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\r\n      } else {\r\n        result += withoutSuffix || isFuture ? 'sekund' : 'sekund';\r\n      }\r\n      return result;\r\n    case 'm':\r\n      return withoutSuffix ? 'ena minuta' : 'eno minuto';\r\n    case 'mm':\r\n      if (number === 1) {\r\n        result += withoutSuffix ? 'minuta' : 'minuto';\r\n      } else if (number === 2) {\r\n        result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\r\n      } else if (number < 5) {\r\n        result += withoutSuffix || isFuture ? 'minute' : 'minutami';\r\n      } else {\r\n        result += withoutSuffix || isFuture ? 'minut' : 'minutami';\r\n      }\r\n      return result;\r\n    case 'h':\r\n      return withoutSuffix ? 'ena ura' : 'eno uro';\r\n    case 'hh':\r\n      if (number === 1) {\r\n        result += withoutSuffix ? 'ura' : 'uro';\r\n      } else if (number === 2) {\r\n        result += withoutSuffix || isFuture ? 'uri' : 'urama';\r\n      } else if (number < 5) {\r\n        result += withoutSuffix || isFuture ? 'ure' : 'urami';\r\n      } else {\r\n        result += withoutSuffix || isFuture ? 'ur' : 'urami';\r\n      }\r\n      return result;\r\n    case 'd':\r\n      return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\r\n    case 'dd':\r\n      if (number === 1) {\r\n        result += withoutSuffix || isFuture ? 'dan' : 'dnem';\r\n      } else if (number === 2) {\r\n        result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\r\n      } else {\r\n        result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\r\n      }\r\n      return result;\r\n    case 'M':\r\n      return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\r\n    case 'MM':\r\n      if (number === 1) {\r\n        result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\r\n      } else if (number === 2) {\r\n        result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\r\n      } else if (number < 5) {\r\n        result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\r\n      } else {\r\n        result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\r\n      }\r\n      return result;\r\n    case 'y':\r\n      return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\r\n    case 'yy':\r\n      if (number === 1) {\r\n        result += withoutSuffix || isFuture ? 'leto' : 'letom';\r\n      } else if (number === 2) {\r\n        result += withoutSuffix || isFuture ? 'leti' : 'letoma';\r\n      } else if (number < 5) {\r\n        result += withoutSuffix || isFuture ? 'leta' : 'leti';\r\n      } else {\r\n        result += withoutSuffix || isFuture ? 'let' : 'leti';\r\n      }\r\n      return result;\r\n  }\r\n}\r\n\r\nexport const slLocale: LocaleData = {\r\n  abbr: 'sl',\r\n  months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\r\n  monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\r\n  weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\r\n  weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D. MMMM YYYY',\r\n    LLL: 'D. MMMM YYYY H:mm',\r\n    LLLL: 'dddd, D. MMMM YYYY H:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[danes ob] LT',\r\n    nextDay: '[jutri ob] LT',\r\n\r\n    nextWeek(date: Date) {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[v] [nedeljo] [ob] LT';\r\n        case 3:\r\n          return '[v] [sredo] [ob] LT';\r\n        case 6:\r\n          return '[v] [soboto] [ob] LT';\r\n        case 1:\r\n        case 2:\r\n        case 4:\r\n        case 5:\r\n          return '[v] dddd [ob] LT';\r\n      }\r\n    },\r\n    lastDay: '[včeraj ob] LT',\r\n    lastWeek(date: Date) {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n          return '[prejšnjo] [nedeljo] [ob] LT';\r\n        case 3:\r\n          return '[prejšnjo] [sredo] [ob] LT';\r\n        case 6:\r\n          return '[prejšnjo] [soboto] [ob] LT';\r\n        case 1:\r\n        case 2:\r\n        case 4:\r\n        case 5:\r\n          return '[prejšnji] dddd [ob] LT';\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'čez %s',\r\n    past: 'pred %s',\r\n    s: processRelativeTime,\r\n    ss: processRelativeTime,\r\n    m: processRelativeTime,\r\n    mm: processRelativeTime,\r\n    h: processRelativeTime,\r\n    hh: processRelativeTime,\r\n    d: processRelativeTime,\r\n    dd: processRelativeTime,\r\n    M: processRelativeTime,\r\n    MM: processRelativeTime,\r\n    y: processRelativeTime,\r\n    yy: processRelativeTime\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n  ordinal: '%d.',\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 7  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Albanian [sq]\r\n//! author : Agon Cecelia : https://github.com/agoncecelia\r\n\r\nexport const sqLocale: LocaleData = {\r\n  abbr: 'sq',\r\n  months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\r\n  monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\r\n  weekdays : 'E Dielë_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\r\n  weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\r\n  weekdaysMin : 'Di_He_Ma_Me_En_Pr_Sh'.split('_'),\r\n  longDateFormat : {\r\n    LT : 'HH:mm',\r\n    LTS : 'HH:mm:ss',\r\n    L : 'DD/MM/YYYY',\r\n    LL : 'D MMMM YYYY',\r\n    LLL : 'D MMMM YYYY HH:mm',\r\n    LLLL : 'dddd, D MMMM YYYY HH:mm'\r\n  },\r\n  calendar : {\r\n    sameDay : '[Sot në] LT',\r\n    nextDay : '[Nesër në] LT',\r\n    nextWeek : 'dddd [në] LT',\r\n    lastDay : '[Dje në] LT',\r\n    lastWeek : 'dddd [e kaluar në] LT',\r\n    sameElse : 'L'\r\n  },\r\n  relativeTime : {\r\n    future : 'në %s',\r\n    past : 'para %sve',\r\n    s : 'disa sekonda',\r\n    ss : '%d sekonda',\r\n    m : 'një minut',\r\n    mm : '%d minuta',\r\n    h : 'një orë',\r\n    hh : '%d orë',\r\n    d : 'një ditë',\r\n    dd : '%d ditë',\r\n    M : 'një muaj',\r\n    MM : '%d muaj',\r\n    y : 'një vit',\r\n    yy : '%d vite'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}\\./, // need clarification\r\n  ordinal : '%d.', // need clarification\r\n  week : {\r\n    dow : 1, // Monday is the first day of the week.\r\n    doy : 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Swedish [sv]\r\n//! author : Jens Alm : https://github.com/ulmus\r\n\r\nexport const svLocale: LocaleData = {\r\n  abbr: 'sv',\r\n  months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\r\n  monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\r\n  weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\r\n  weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\r\n  weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'YYYY-MM-DD',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY [kl.] HH:mm',\r\n    LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\r\n    lll: 'D MMM YYYY HH:mm',\r\n    llll: 'ddd D MMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[Idag] LT',\r\n    nextDay: '[Imorgon] LT',\r\n    lastDay: '[Igår] LT',\r\n    nextWeek: '[På] dddd LT',\r\n    lastWeek: '[I] dddd[s] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'om %s',\r\n    past: 'för %s sedan',\r\n    s: 'några sekunder',\r\n    ss: '%d sekunder',\r\n    m: 'en minut',\r\n    mm: '%d minuter',\r\n    h: 'en timme',\r\n    hh: '%d timmar',\r\n    d: 'en dag',\r\n    dd: '%d dagar',\r\n    M: 'en månad',\r\n    MM: '%d månader',\r\n    y: 'ett år',\r\n    yy: '%d år'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\r\n  ordinal(_num: number): string {\r\n    const num = Number(_num);\r\n    let b = num % 10,\r\n      output = (~~(num % 100 / 10) === 1) ? 'e' :\r\n        (b === 1) ? 'a' :\r\n          (b === 2) ? 'a' :\r\n            (b === 3) ? 'e' : 'e';\r\n    return num + output;\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","// moment.js locale configuration\r\n// locale : Thai [th]\r\n// author : Watcharapol Sanitwong : https://github.com/tumit\r\n\r\nimport { LocaleData } from '../locale/locale.class';\r\n\r\nexport const thLocale: LocaleData = {\r\n  abbr: 'th',\r\n  months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\r\n  monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\r\n  weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), // yes, three characters difference\r\n  weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY เวลา H:mm',\r\n    LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\r\n  },\r\n  meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\r\n  isPM(input) {\r\n    return input === 'หลังเที่ยง';\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    if (hour < 12) {\r\n      return 'ก่อนเที่ยง';\r\n    } else {\r\n      return 'หลังเที่ยง';\r\n    }\r\n  },\r\n  calendar: {\r\n    sameDay: '[วันนี้ เวลา] LT',\r\n    nextDay: '[พรุ่งนี้ เวลา] LT',\r\n    nextWeek: 'dddd[หน้า เวลา] LT',\r\n    lastDay: '[เมื่อวานนี้ เวลา] LT',\r\n    lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'อีก %s',\r\n    past: '%sที่แล้ว',\r\n    s: 'ไม่กี่วินาที',\r\n    ss: '%d วินาที',\r\n    m: '1 นาที',\r\n    mm: '%d นาที',\r\n    h: '1 ชั่วโมง',\r\n    hh: '%d ชั่วโมง',\r\n    d: '1 วัน',\r\n    dd: '%d วัน',\r\n    M: '1 เดือน',\r\n    MM: '%d เดือน',\r\n    y: '1 ปี',\r\n    yy: '%d ปี'\r\n  }\r\n};\r\n","// moment.js locale configuration\r\n// locale : Thai-Buddhist Era [th-be]\r\n// author : Watcharapol Sanitwong : https://github.com/tumit\r\n\r\nimport { LocaleData } from '../locale/locale.class';\r\n\r\nexport const thBeLocale: LocaleData = {\r\n  abbr: 'th-be',\r\n  months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\r\n  monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\r\n  weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\r\n  weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\r\n  weekdaysParseExact: true,\r\n  longDateFormat: {\r\n    LT: 'H:mm',\r\n    LTS: 'H:mm:ss',\r\n    L: 'DD/MM/YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY เวลา H:mm',\r\n    LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\r\n  },\r\n  meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\r\n  isPM(input) {\r\n    return input === 'หลังเที่ยง';\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    if (hour < 12) {\r\n      return 'ก่อนเที่ยง';\r\n    } else {\r\n      return 'หลังเที่ยง';\r\n    }\r\n  },\r\n  calendar: {\r\n    sameDay: '[วันนี้ เวลา] LT',\r\n    nextDay: '[พรุ่งนี้ เวลา] LT',\r\n    nextWeek: 'dddd[หน้า เวลา] LT',\r\n    lastDay: '[เมื่อวานนี้ เวลา] LT',\r\n    lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'อีก %s',\r\n    past: '%sที่แล้ว',\r\n    s: 'ไม่กี่วินาที',\r\n    ss: '%d วินาที',\r\n    m: '1 นาที',\r\n    mm: '%d นาที',\r\n    h: '1 ชั่วโมง',\r\n    hh: '%d ชั่วโมง',\r\n    d: '1 วัน',\r\n    dd: '%d วัน',\r\n    M: '1 เดือน',\r\n    MM: '%d เดือน',\r\n    y: '1 ปี',\r\n    yy: '%d ปี'\r\n  },\r\n\r\n  preparse(str: string, format?: string): string {\r\n\r\n    const _format = thBeLocale.longDateFormat[format]\r\n      ? thBeLocale.longDateFormat[format]\r\n      : format;\r\n\r\n    // endsWith('YYYY')\r\n    if (_format.indexOf('YYYY', _format.length - 'YYYY'.length) !== -1 ) {\r\n      const ddMM = str.substr(0, str.length - 4);\r\n      const yyyy = parseInt(str.substr(str.length - 4), 10) - 543;\r\n      return ddMM + yyyy;\r\n    }\r\n\r\n    return str;\r\n  },\r\n\r\n  getFullYear(date: Date, isUTC = false): number {\r\n    return 543 + (isUTC ? date.getUTCFullYear() : date.getFullYear());\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Turkish [tr]\r\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\r\n//!           Burak Yiğit Kaya: https://github.com/BYK\r\n\r\nlet suffixes: { [key: string]: string } = {\r\n  1: '\\'inci',\r\n  5: '\\'inci',\r\n  8: '\\'inci',\r\n  70: '\\'inci',\r\n  80: '\\'inci',\r\n  2: '\\'nci',\r\n  7: '\\'nci',\r\n  20: '\\'nci',\r\n  50: '\\'nci',\r\n  3: '\\'üncü',\r\n  4: '\\'üncü',\r\n  100: '\\'üncü',\r\n  6: '\\'ncı',\r\n  9: '\\'uncu',\r\n  10: '\\'uncu',\r\n  30: '\\'uncu',\r\n  60: '\\'ıncı',\r\n  90: '\\'ıncı'\r\n};\r\n\r\nexport const trLocale: LocaleData = {\r\n  abbr: 'tr',\r\n  months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\r\n  monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\r\n  weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\r\n  weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\r\n  weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D MMMM YYYY',\r\n    LLL: 'D MMMM YYYY HH:mm',\r\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: '[bugün saat] LT',\r\n    nextDay: '[yarın saat] LT',\r\n    nextWeek: '[gelecek] dddd [saat] LT',\r\n    lastDay: '[dün] LT',\r\n    lastWeek: '[geçen] dddd [saat] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: '%s sonra',\r\n    past: '%s önce',\r\n    s: 'birkaç saniye',\r\n    ss: '%d saniye',\r\n    m: 'bir dakika',\r\n    mm: '%d dakika',\r\n    h: 'bir saat',\r\n    hh: '%d saat',\r\n    d: 'bir gün',\r\n    dd: '%d gün',\r\n    M: 'bir ay',\r\n    MM: '%d ay',\r\n    y: 'bir yıl',\r\n    yy: '%d yıl'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\r\n  ordinal(_num: number): string {\r\n    const num = Number(_num);\r\n    if (num === 0) {  // special case for zero\r\n      return num + '\\'ıncı';\r\n    }\r\n    let a = num % 10,\r\n      b = num % 100 - a,\r\n      c = num >= 100 ? 100 : null;\r\n    return num + (suffixes[a] || suffixes[b] || suffixes[c]);\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 7  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\nimport { getHours } from '../utils/date-getters';\r\nimport { getDayOfWeek } from '../units/day-of-week';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Ukrainian [uk]\r\n//! author : zemlanin : https://github.com/zemlanin\r\n//! Author : Menelion Elensúle : https://github.com/Oire\r\n\r\nfunction plural(word, num) {\r\n  let forms = word.split('_');\r\n  return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\r\n}\r\n\r\nfunction relativeTimeWithPlural(num: number, withoutSuffix, key): string {\r\n  let format: { [key: string]: string } = {\r\n    ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\r\n    mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\r\n    hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\r\n    dd: 'день_дні_днів',\r\n    MM: 'місяць_місяці_місяців',\r\n    yy: 'рік_роки_років'\r\n  };\r\n\r\n  if (key === 'm') {\r\n    return withoutSuffix ? 'хвилина' : 'хвилину';\r\n  }\r\n\r\n  if (key === 'h') {\r\n    return withoutSuffix ? 'година' : 'годину';\r\n  }\r\n  return num + ' ' + plural(format[key], +num);\r\n}\r\n\r\nfunction weekdaysCaseReplace(date: Date, format: string, isUTC?: boolean): string | string[] {\r\n  let weekdays = {\r\n    nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\r\n    accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\r\n    genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\r\n  };\r\n\r\n  if (!date) {\r\n    return weekdays.nominative;\r\n  }\r\n\r\n  let nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\r\n    'accusative' :\r\n    ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\r\n      'genitive' :\r\n      'nominative');\r\n  return weekdays[nounCase][getDayOfWeek(date, isUTC)];\r\n}\r\n\r\nfunction processHoursFunction(str: string) {\r\n  return function (date: Date): string {\r\n    return str + 'о' + (getHours(date) === 11 ? 'б' : '') + '] LT';\r\n  };\r\n}\r\n\r\nexport const ukLocale: LocaleData = {\r\n  abbr: 'uk',\r\n  months: {\r\n    format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\r\n    standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\r\n  },\r\n  monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\r\n  weekdays: weekdaysCaseReplace,\r\n  weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\r\n  weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'DD.MM.YYYY',\r\n    LL: 'D MMMM YYYY р.',\r\n    LLL: 'D MMMM YYYY р., HH:mm',\r\n    LLLL: 'dddd, D MMMM YYYY р., HH:mm'\r\n  },\r\n  calendar: {\r\n    sameDay: processHoursFunction('[Сьогодні '),\r\n    nextDay: processHoursFunction('[Завтра '),\r\n    lastDay: processHoursFunction('[Вчора '),\r\n    nextWeek: processHoursFunction('[У] dddd ['),\r\n    lastWeek(date: Date) {\r\n      switch (getDayOfWeek(date)) {\r\n        case 0:\r\n        case 3:\r\n        case 5:\r\n        case 6:\r\n          return processHoursFunction('[Минулої] dddd [')(date);\r\n        case 1:\r\n        case 2:\r\n        case 4:\r\n          return processHoursFunction('[Минулого] dddd [')(date);\r\n      }\r\n    },\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime: {\r\n    future: 'за %s',\r\n    past: '%s тому',\r\n    s: 'декілька секунд',\r\n    ss: relativeTimeWithPlural,\r\n    m: relativeTimeWithPlural,\r\n    mm: relativeTimeWithPlural,\r\n    h: 'годину',\r\n    hh: relativeTimeWithPlural,\r\n    d: 'день',\r\n    dd: relativeTimeWithPlural,\r\n    M: 'місяць',\r\n    MM: relativeTimeWithPlural,\r\n    y: 'рік',\r\n    yy: relativeTimeWithPlural\r\n  },\r\n  // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\r\n  meridiemParse: /ночі|ранку|дня|вечора/,\r\n  isPM(input) {\r\n    return /^(дня|вечора)$/.test(input);\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    if (hour < 4) {\r\n      return 'ночі';\r\n    } else if (hour < 12) {\r\n      return 'ранку';\r\n    } else if (hour < 17) {\r\n      return 'дня';\r\n    } else {\r\n      return 'вечора';\r\n    }\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\r\n  ordinal(_num: number, period: string): string {\r\n    const num = Number(_num);\r\n    switch (period) {\r\n      case 'M':\r\n      case 'd':\r\n      case 'DDD':\r\n      case 'w':\r\n      case 'W':\r\n        return num + '-й';\r\n      case 'D':\r\n        return num + '-го';\r\n      default:\r\n        return num.toString();\r\n    }\r\n  },\r\n  week: {\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 7  // The week that contains Jan 1st is the first week of the year.\r\n  }\r\n};\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Việt Nam [vi]\r\n//! author : Chris Gedrim : https://github.com/chrisgedrim\r\n\r\nexport const viLocale: LocaleData = {\r\n  abbr: 'vi',\r\n  months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\r\n  monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\r\n  monthsParseExact: true,\r\n  weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\r\n  weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\r\n  weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\r\n  weekdaysParseExact : true,\r\n  meridiemParse: /sa|ch/i,\r\n  isPM(input: string): boolean {\r\n    return /^ch$/i.test(input);\r\n  },\r\n  meridiem(hours: number, minutes: number, isLower: boolean): string {\r\n    if (hours < 12) {\r\n      return isLower ? 'sa' : 'SA';\r\n    } else {\r\n      return isLower ? 'ch' : 'CH';\r\n    }\r\n  },\r\n  longDateFormat : {\r\n    LT : 'HH:mm',\r\n    LTS : 'HH:mm:ss',\r\n    L : 'DD/MM/YYYY',\r\n    LL : 'D MMMM [năm] YYYY',\r\n    LLL : 'D MMMM [năm] YYYY HH:mm',\r\n    LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\r\n    l : 'DD/M/YYYY',\r\n    ll : 'D MMM YYYY',\r\n    lll : 'D MMM YYYY HH:mm',\r\n    llll : 'ddd, D MMM YYYY HH:mm'\r\n  },\r\n  calendar : {\r\n    sameDay: '[Hôm nay lúc] LT',\r\n    nextDay: '[Ngày mai lúc] LT',\r\n    nextWeek: 'dddd [tuần tới lúc] LT',\r\n    lastDay: '[Hôm qua lúc] LT',\r\n    lastWeek: 'dddd [tuần trước lúc] LT',\r\n    sameElse: 'L'\r\n  },\r\n  relativeTime : {\r\n    future : '%s tới',\r\n    past : '%s trước',\r\n    s : 'vài giây',\r\n    ss : '%d giây' ,\r\n    m : 'một phút',\r\n    mm : '%d phút',\r\n    h : 'một giờ',\r\n    hh : '%d giờ',\r\n    d : 'một ngày',\r\n    dd : '%d ngày',\r\n    M : 'một tháng',\r\n    MM : '%d tháng',\r\n    y : 'một năm',\r\n    yy : '%d năm'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}/,\r\n  ordinal(_num: number): string {\r\n    return '' + _num;\r\n  },\r\n  week : {\r\n    dow : 1, // Thứ Hai là ngày đầu tuần.\r\n    doy : 4  // Tuần chứa ngày 4 tháng 1 là tuần đầu tiên trong năm.\r\n  }\r\n};\r\n\r\n","import { LocaleData } from '../locale/locale.class';\r\n\r\n//! moment.js locale configuration\r\n//! locale : Chinese (China) [zh-cn]\r\n//! author : suupic : https://github.com/suupic\r\n//! author : Zeno Zeng : https://github.com/zenozeng\r\n\r\nexport const zhCnLocale: LocaleData = {\r\n  abbr: 'zh-cn',\r\n  months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\r\n  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\r\n  weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\r\n  weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\r\n  weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\r\n  longDateFormat: {\r\n    LT: 'HH:mm',\r\n    LTS: 'HH:mm:ss',\r\n    L: 'YYYY/MM/DD',\r\n    LL: 'YYYY年M月D日',\r\n    LLL: 'YYYY年M月D日Ah点mm分',\r\n    LLLL: 'YYYY年M月D日ddddAh点mm分',\r\n    l: 'YYYY/M/D',\r\n    ll: 'YYYY年M月D日',\r\n    lll: 'YYYY年M月D日 HH:mm',\r\n    llll: 'YYYY年M月D日dddd HH:mm'\r\n  },\r\n  meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\r\n  meridiemHour(hour, meridiem) {\r\n    if (hour === 12) {\r\n      hour = 0;\r\n    }\r\n    if (meridiem === '凌晨' || meridiem === '早上' ||\r\n      meridiem === '上午') {\r\n      return hour;\r\n    } else if (meridiem === '下午' || meridiem === '晚上') {\r\n      return hour + 12;\r\n    } else {\r\n      // '中午'\r\n      return hour >= 11 ? hour : hour + 12;\r\n    }\r\n  },\r\n  meridiem(hour, minute, isLower) {\r\n    let hm = hour * 100 + minute;\r\n    if (hm < 600) {\r\n      return '凌晨';\r\n    } else if (hm < 900) {\r\n      return '早上';\r\n    } else if (hm < 1130) {\r\n      return '上午';\r\n    } else if (hm < 1230) {\r\n      return '中午';\r\n    } else if (hm < 1800) {\r\n      return '下午';\r\n    } else {\r\n      return '晚上';\r\n    }\r\n  },\r\n  calendar: {\r\n    sameDay: '[今天]LT',\r\n    nextDay: '[明天]LT',\r\n    nextWeek: '[下]ddddLT',\r\n    lastDay: '[昨天]LT',\r\n    lastWeek: '[上]ddddLT',\r\n    sameElse: 'L'\r\n  },\r\n  dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\r\n  ordinal(_num: number, period) {\r\n    const num = Number(_num);\r\n    switch (period) {\r\n      case 'd':\r\n      case 'D':\r\n      case 'DDD':\r\n        return num + '日';\r\n      case 'M':\r\n        return num + '月';\r\n      case 'w':\r\n      case 'W':\r\n        return num + '周';\r\n      default:\r\n        return num.toString();\r\n    }\r\n  },\r\n  relativeTime: {\r\n    future: '%s内',\r\n    past: '%s前',\r\n    s: '几秒',\r\n    ss: '%d 秒',\r\n    m: '1 分钟',\r\n    mm: '%d 分钟',\r\n    h: '1 小时',\r\n    hh: '%d 小时',\r\n    d: '1 天',\r\n    dd: '%d 天',\r\n    M: '1 个月',\r\n    MM: '%d 个月',\r\n    y: '1 年',\r\n    yy: '%d 年'\r\n  },\r\n  week: {\r\n    // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\r\n    dow: 1, // Monday is the first day of the week.\r\n    doy: 4  // The week that contains Jan 4th is the first week of the year.\r\n  }\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["daysInMonth","isSameDay","symbolMap","numberMap","months","monthsShortDot","monthsShort","monthsParse","monthsRegex","plural","translate","processRelativeTime","suffixes","monthsShortWithDots","monthsShortWithoutDots","relativeTimeWithPlural"],"mappings":"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"}