You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by di...@apache.org on 2016/06/07 17:56:04 UTC

[1/5] ambari git commit: Ambari-16017: Update Moment.js to latest stable version 2.13.0 (Sangeeta Ravindran via dili)

Repository: ambari
Updated Branches:
  refs/heads/trunk 237715f04 -> 4e2d4aff3


http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2d4aff/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.min.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.min.js b/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.min.js
new file mode 100644
index 0000000..d301ddb
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.min.js
@@ -0,0 +1,7 @@
+//! moment.js
+//! version : 2.13.0
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return fd.apply(null,arguments)}function b(a){fd=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return Ja(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function j(a){return null==a._pf&&(a._pf=i()
 ),a._pf}function k(a){if(null==a._isValid){var b=j(a),c=gd.call(b.parsedDateParts,function(a){return null!=a});a._isValid=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c),a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(NaN);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a){return void 0===a}function n(a,b){var c,d,e;if(m(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),m(b._i)||(a._i=b._i),m(b._f)||(a._f=b._f),m(b._l)||(a._l=b._l),m(b._strict)||(a._strict=b._strict),m(b._tzm)||(a._tzm=b._tzm),m(b._isUTC)||(a._isUTC=b._isUTC),m(b._offset)||(a._offset=b._offset),m(b._pf)||(a._pf=j(b)),m(b._locale)||(a._locale=b._locale),hd.length>0)for(c in hd)d=hd[c],e=b[d],m(e)||(a[d]=e);return a}function o(b){n(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN
 ),id===!1&&(id=!0,a.updateOffset(this),id=!1)}function p(a){return a instanceof o||null!=a&&null!=a._isAMomentObject}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=q(b)),c}function s(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&r(a[d])!==r(b[d]))&&g++;return g+f}function t(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function u(b,c){var d=!0;return g(function(){return null!=a.deprecationHandler&&a.deprecationHandler(null,b),d&&(t(b+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),d=!1),c.apply(this,arguments)},c)}function v(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),jd[b]||(t(c),jd[b]=!0)}function w(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function x(a){return"[object Object]"
 ===Object.prototype.toString.call(a)}function y(a){var b,c;for(c in a)b=a[c],w(b)?this[c]=b:this["_"+c]=b;this._config=a,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function z(a,b){var c,d=g({},a);for(c in b)f(b,c)&&(x(a[c])&&x(b[c])?(d[c]={},g(d[c],a[c]),g(d[c],b[c])):null!=b[c]?d[c]=b[c]:delete d[c]);return d}function A(a){null!=a&&this.set(a)}function B(a){return a?a.toLowerCase().replace("_","-"):a}function C(a){for(var b,c,d,e,f=0;f<a.length;){for(e=B(a[f]).split("-"),b=e.length,c=B(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=D(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&s(e,c,!0)>=b-1)break;b--}f++}return null}function D(a){var b=null;if(!nd[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=ld._abbr,require("./locale/"+a),E(b)}catch(c){}return nd[a]}function E(a,b){var c;return a&&(c=m(b)?H(a):F(a,b),c&&(ld=c)),ld._abbr}function F(a,b){return null!==b?(b.abbr=a,null!=nd[a]?(v("defineLocaleOverride","use moment.updateLoca
 le(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),b=z(nd[a]._config,b)):null!=b.parentLocale&&(null!=nd[b.parentLocale]?b=z(nd[b.parentLocale]._config,b):v("parentLocaleUndefined","specified parentLocale is not defined yet")),nd[a]=new A(b),E(a),nd[a]):(delete nd[a],null)}function G(a,b){if(null!=b){var c;null!=nd[a]&&(b=z(nd[a]._config,b)),c=new A(b),c.parentLocale=nd[a],nd[a]=c,E(a)}else null!=nd[a]&&(null!=nd[a].parentLocale?nd[a]=nd[a].parentLocale:null!=nd[a]&&delete nd[a]);return nd[a]}function H(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return ld;if(!c(a)){if(b=D(a))return b;a=[a]}return C(a)}function I(){return kd(nd)}function J(a,b){var c=a.toLowerCase();od[c]=od[c+"s"]=od[b]=a}function K(a){return"string"==typeof a?od[a]||od[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)f(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(b,c){return function(d)
 {return null!=d?(O(this,b,d),a.updateOffset(this,c),this):N(this,b)}}function N(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function O(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function P(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=K(a),w(this[a]))return this[a](b);return this}function Q(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function R(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(sd[a]=e),b&&(sd[b[0]]=function(){return Q(e.apply(this,arguments),b[1],b[2])}),c&&(sd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function S(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function T(a){var b,c,d=a.match(pd);for(b=0,c=d.length;c>b;b++)sd[d[b]]?d[b]=sd[d[b]]:d[b]=S(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];
 return f}}function U(a,b){return a.isValid()?(b=V(b,a.localeData()),rd[b]=rd[b]||T(b),rd[b](a)):a.localeData().invalidDate()}function V(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(qd.lastIndex=0;d>=0&&qd.test(a);)a=a.replace(qd,c),qd.lastIndex=0,d-=1;return a}function W(a,b,c){Kd[a]=w(b)?b:function(a,d){return a&&c?c:b}}function X(a,b){return f(Kd,a)?Kd[a](b._strict,b._locale):new RegExp(Y(a))}function Y(a){return Z(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function Z(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=r(a)}),c=0;c<a.length;c++)Ld[a[c]]=d}function _(a,b){$(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function aa(a,b,c){null!=b&&f(Ld,a)&&Ld[a](b,c._a,c,a)}function ba(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function ca(a,b){return c(this._months)?this._months[a.month()]:t
 his._months[Vd.test(b)?"format":"standalone"][a.month()]}function da(a,b){return c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[Vd.test(b)?"format":"standalone"][a.month()]}function ea(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=h([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:null):(e=md.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:(e=md.call(this._longMonthsParse,g),-1!==e?e:null)):(e=md.call(this._longMonthsParse,g),-1!==e?e:(e=md.call(this._shortMonthsParse,g),-1!==e?e:null))}function fa(a,b,c){var d,e,f;if(this._monthsParseExact)return ea.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMon
 thsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ga(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=r(b);else if(b=a.localeData().monthsParse(b),"number"!=typeof b)return a;return c=Math.min(a.date(),ba(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ha(b){return null!=b?(ga(this,b),a.updateOffset(this,!0),this):N(this,"Month")}function ia(){return ba(this.year(),this.month())}function ja(a){return this._monthsParseExact?(f(this,"_months
 Regex")||la.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex}function ka(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex}function la(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=h([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=Z(d[b]),e[b]=Z(e[b]),f[b]=Z(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function ma(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[Nd]<0||c[Nd]>11?Nd:c[Od]<1||c[Od]>ba(c[Md],
 c[Nd])?Od:c[Pd]<0||c[Pd]>24||24===c[Pd]&&(0!==c[Qd]||0!==c[Rd]||0!==c[Sd])?Pd:c[Qd]<0||c[Qd]>59?Qd:c[Rd]<0||c[Rd]>59?Rd:c[Sd]<0||c[Sd]>999?Sd:-1,j(a)._overflowDayOfYear&&(Md>b||b>Od)&&(b=Od),j(a)._overflowWeeks&&-1===b&&(b=Td),j(a)._overflowWeekday&&-1===b&&(b=Ud),j(a).overflow=b),a}function na(a){var b,c,d,e,f,g,h=a._i,i=$d.exec(h)||_d.exec(h);if(i){for(j(a).iso=!0,b=0,c=be.length;c>b;b++)if(be[b][1].exec(i[1])){e=be[b][0],d=be[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=ce.length;c>b;b++)if(ce[b][1].exec(i[3])){f=(i[2]||" ")+ce[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!ae.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),Ca(a)}else a._isValid=!1}function oa(b){var c=de.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(na(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function pa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>
 =0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function qa(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ra(a){return sa(a)?366:365}function sa(a){return a%4===0&&a%100!==0||a%400===0}function ta(){return sa(this.year())}function ua(a,b,c){var d=7+b-c,e=(7+qa(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=ra(f)+j):j>ra(a)?(f=a+1,g=j-ra(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(ra(a)-d+e)/7}function ya(a,b,c){return null!=a?a:null!=b?b:c}function za(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),
 c.getMonth(),c.getDate()]}function Aa(a){var b,c,d,e,f=[];if(!a._d){for(d=za(a),a._w&&null==a._a[Od]&&null==a._a[Nd]&&Ba(a),a._dayOfYear&&(e=ya(a._a[Md],d[Md]),a._dayOfYear>ra(e)&&(j(a)._overflowDayOfYear=!0),c=qa(e,0,a._dayOfYear),a._a[Nd]=c.getUTCMonth(),a._a[Od]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[Pd]&&0===a._a[Qd]&&0===a._a[Rd]&&0===a._a[Sd]&&(a._nextDay=!0,a._a[Pd]=0),a._d=(a._useUTC?qa:pa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Pd]=24)}}function Ba(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ya(b.GG,a._a[Md],wa(Ka(),1,4).year),d=ya(b.W,1),e=ya(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ya(b.gg,a._a[Md],wa(Ka(),f,g).year),d=ya(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>xa(c,f,g)?j(a)._overflowWeeks=!0:null!=i?j(a)._ov
 erflowWeekday=!0:(h=va(c,d,e,f,g),a._a[Md]=h.year,a._dayOfYear=h.dayOfYear)}function Ca(b){if(b._f===a.ISO_8601)return void na(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=V(b._f,b._locale).match(pd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(X(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),sd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),aa(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[Pd]<=12&&b._a[Pd]>0&&(j(b).bigHour=void 0),j(b).parsedDateParts=b._a.slice(0),j(b).meridiem=b._meridiem,b._a[Pd]=Da(b._locale,b._a[Pd],b._meridiem),Aa(b),ma(b)}function Da(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function Ea(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=
 0;e<a._f.length;e++)f=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],Ca(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function Fa(a){if(!a._d){var b=L(a._i);a._a=e([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),Aa(a)}}function Ga(a){var b=new o(ma(Ha(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Ha(a){var b=a._i,e=a._f;return a._locale=a._locale||H(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),p(b)?new o(ma(b)):(c(e)?Ea(a):e?Ca(a):d(b)?a._d=b:Ia(a),k(a)||(a._d=null),a))}function Ia(b){var f=b._i;void 0===f?b._d=new Date(a.now()):d(f)?b._d=new Date(f.valueOf()):"string"==typeof f?oa(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),Aa(b)):"object"==typeof f?Fa(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ja(a,b,c,d,e
 ){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,Ga(f)}function Ka(a,b,c,d){return Ja(a,b,c,d,!1)}function La(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Ka();for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function Ma(){var a=[].slice.call(arguments,0);return La("isBefore",a)}function Na(){var a=[].slice.call(arguments,0);return La("isAfter",a)}function Oa(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=H(),this._bubble()}function Pa(a){return a instanceof Oa}function Qa(a,b){R(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+Q(~~(a/60),2)+b+Q(~~a%60,2)})}function Ra(a,b){var c=(b||"").match(a)||[],d=c[c.length-1]||[],e=(d+"").m
 atch(ie)||["-",0,0],f=+(60*e[1])+r(e[2]);return"+"===e[0]?f:-f}function Sa(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(p(b)||d(b)?b.valueOf():Ka(b).valueOf())-e.valueOf(),e._d.setTime(e._d.valueOf()+f),a.updateOffset(e,!1),e):Ka(b).local()}function Ta(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Ua(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?("string"==typeof b?b=Ra(Hd,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ta(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?jb(this,db(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ta(this):null!=b?this:NaN}function Va(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Wa(a){return this.utcOffset(0,a)}function Xa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ta(this),"m")),this}function Ya(
 ){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ra(Gd,this._i)),this}function Za(a){return this.isValid()?(a=a?Ka(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function $a(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function _a(){if(!m(this._isDSTShifted))return this._isDSTShifted;var a={};if(n(a,this),a=Ha(a),a._a){var b=a._isUTC?h(a._a):Ka(a._a);this._isDSTShifted=this.isValid()&&s(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ab(){return this.isValid()?!this._isUTC:!1}function bb(){return this.isValid()?this._isUTC:!1}function cb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function db(a,b){var c,d,e,g=a,h=null;return Pa(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=je.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:r(h[Od])*c,h:r(h[Pd])*c,m:r(h[Qd])*c,s:r(h[Rd])*c,ms:r(h[Sd])*c})
 :(h=ke.exec(a))?(c="-"===h[1]?-1:1,g={y:eb(h[2],c),M:eb(h[3],c),w:eb(h[4],c),d:eb(h[5],c),h:eb(h[6],c),m:eb(h[7],c),s:eb(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=gb(Ka(g.from),Ka(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Oa(g),Pa(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function eb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function fb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function gb(a,b){var c;return a.isValid()&&b.isValid()?(b=Sa(b,a),a.isBefore(b)?c=fb(a,b):(c=fb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function hb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}function ib(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(v(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(num
 ber, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=db(c,d),jb(this,e,a),this}}function jb(b,c,d,e){var f=c._milliseconds,g=hb(c._days),h=hb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&O(b,"Date",N(b,"Date")+g*d),h&&ga(b,N(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function kb(a,b){var c=a||Ka(),d=Sa(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse",g=b&&(w(b[f])?b[f]():b[f]);return this.format(g||this.localeData().calendar(f,this,Ka(c)))}function lb(){return new o(this)}function mb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function nb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):
 !1}function ob(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function pb(a,b){var c,d=p(a)?a:Ka(a);return this.isValid()&&d.isValid()?(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function qb(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function rb(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function sb(a,b,c){var d,e,f,g;return this.isValid()?(d=Sa(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=tb(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:q(g)):NaN):NaN}function tb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months
 "),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function ub(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function vb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?w(Date.prototype.toISOString)?this.toDate().toISOString():U(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):U(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function wb(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=U(this,b);return this.localeData().postformat(c)}function xb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function yb(a){return this.from(Ka(),a)}function zb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function Ab(a){return this.to(Ka(),a)}function Bb(a){var b;return void 0===a?this._locale._abbr:(b=H(a),null!=b&&(this._locale=b),thi
 s)}function Cb(){return this._locale}function Db(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function Eb(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function Fb(){return this._d.valueOf()-6e4*(this._offset||0)}function Gb(){return Math.floor(this.valueOf()/1e3)}function Hb(){return this._offset?new Date(this.valueOf()):this._d}function Ib(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function Jb(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a
 .milliseconds()}}function Kb(){return this.isValid()?this.toISOString():null}function Lb(){return k(this)}function Mb(){return g({},j(this))}function Nb(){return j(this).overflow}function Ob(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Pb(a,b){R(0,[a,a.length],0,b)}function Qb(a){return Ub.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Rb(a){return Ub.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Sb(){return xa(this.year(),1,4)}function Tb(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ub(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Vb.call(this,a,b,c,d,e))}function Vb(a,b,c,d,e){var f=va(a,b,c,d,e),g=qa(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Wb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1
 )+this.month()%3)}function Xb(a){return wa(a,this._week.dow,this._week.doy).week}function Yb(){return this._week.dow}function Zb(){return this._week.doy}function $b(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function _b(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function ac(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function bc(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]}function cc(a){return this._weekdaysShort[a.day()]}function dc(a){return this._weekdaysMin[a.day()]}function ec(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=h([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toL
 ocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function fc(a,b,c){var d,e,f;if(this._weekdaysParseExact)return ec.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=h([2e3,1]).day(d),c&&!this._fullWeekdaysPar
 se[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function gc(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=ac(a,this.localeData()),this.add(a-b,"d")):b}function hc(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d"
 )}function ic(a){return this.isValid()?null==a?this.day()||7:this.day(this.day()%7?a:a-7):null!=a?this:NaN}function jc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex}function kc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function lc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function mc(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],i=[],j=[],k=[];for(b=0;7>b;b++)c=h([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),i.pus
 h(e),j.push(f),k.push(d),k.push(e),k.push(f);for(g.sort(a),i.sort(a),j.sort(a),k.sort(a),b=0;7>b;b++)i[b]=Z(i[b]),j[b]=Z(j[b]),k[b]=Z(k[b]);this._weekdaysRegex=new RegExp("^("+k.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function nc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function oc(){return this.hours()%12||12}function pc(){return this.hours()||24}function qc(a,b){R(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function rc(a,b){return b._meridiemParse}function sc(a){return"p"===(a+"").toLowerCase().charAt(0)}function tc(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function uc(a,b){b[Sd]=r(1e3*("0."+a))}funct
 ion vc(){return this._isUTC?"UTC":""}function wc(){return this._isUTC?"Coordinated Universal Time":""}function xc(a){return Ka(1e3*a)}function yc(){return Ka.apply(null,arguments).parseZone()}function zc(a,b,c){var d=this._calendar[a];return w(d)?d.call(b,c):d}function Ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function Bc(){return this._invalidDate}function Cc(a){return this._ordinal.replace("%d",a)}function Dc(a){return a}function Ec(a,b,c,d){var e=this._relativeTime[c];return w(e)?e(a,b,c,d):e.replace(/%d/i,a)}function Fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return w(c)?c(b):c.replace(/%s/i,b)}function Gc(a,b,c,d){var e=H(),f=h().set(d,b);return e[c](f,a)}function Hc(a,b,c){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return Gc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Gc(a,d,c,"month");return e
 }function Ic(a,b,c,d){"boolean"==typeof a?("number"==typeof b&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,"number"==typeof b&&(c=b,b=void 0),b=b||"");var e=H(),f=a?e._week.dow:0;if(null!=c)return Gc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;7>g;g++)h[g]=Gc(b,(g+f)%7,d,"day");return h}function Jc(a,b){return Hc(a,b,"months")}function Kc(a,b){return Hc(a,b,"monthsShort")}function Lc(a,b,c){return Ic(a,b,c,"weekdays")}function Mc(a,b,c){return Ic(a,b,c,"weekdaysShort")}function Nc(a,b,c){return Ic(a,b,c,"weekdaysMin")}function Oc(){var a=this._data;return this._milliseconds=Le(this._milliseconds),this._days=Le(this._days),this._months=Le(this._months),a.milliseconds=Le(a.milliseconds),a.seconds=Le(a.seconds),a.minutes=Le(a.minutes),a.hours=Le(a.hours),a.months=Le(a.months),a.years=Le(a.years),this}function Pc(a,b,c,d){var e=db(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Qc(a,b){return Pc(this,a,b,1)}function Rc(a,b){return Pc(thi
 s,a,b,-1)}function Sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Sc(Vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=q(f/1e3),i.seconds=a%60,b=q(a/60),i.minutes=b%60,c=q(b/60),i.hours=c%24,g+=q(c/24),e=q(Uc(g)),h+=e,g-=Sc(Vc(e)),d=q(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function Uc(a){return 4800*a/146097}function Vc(a){return 146097*a/4800}function Wc(a){var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+Uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(Vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function Xc(){return this._milliseconds+864e5*this._days+this._month
 s%12*2592e6+31536e6*r(this._months/12)}function Yc(a){return function(){return this.as(a)}}function Zc(a){
+return a=K(a),this[a+"s"]()}function $c(a){return function(){return this._data[a]}}function _c(){return q(this.days()/7)}function ad(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function bd(a,b,c){var d=db(a).abs(),e=_e(d.as("s")),f=_e(d.as("m")),g=_e(d.as("h")),h=_e(d.as("d")),i=_e(d.as("M")),j=_e(d.as("y")),k=e<af.s&&["s",e]||1>=f&&["m"]||f<af.m&&["mm",f]||1>=g&&["h"]||g<af.h&&["hh",g]||1>=h&&["d"]||h<af.d&&["dd",h]||1>=i&&["M"]||i<af.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,ad.apply(null,k)}function cd(a,b){return void 0===af[a]?!1:void 0===b?af[a]:(af[a]=b,!0)}function dd(a){var b=this.localeData(),c=bd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function ed(){var a,b,c,d=bf(this._milliseconds)/1e3,e=bf(this._days),f=bf(this._months);a=q(d/60),b=q(a/60),d%=60,a%=60,c=q(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+
 (l?l+"S":""):"P0D"}var fd,gd;gd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var hd=a.momentProperties=[],id=!1,jd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var kd;kd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)f(a,b)&&c.push(b);return c};var ld,md,nd={},od={},pd=/(\[[^\[]*\])|(\\)?([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,qd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,rd={},sd={},td=/\d/,ud=/\d\d/,vd=/\d{3}/,wd=/\d{4}/,xd=/[+-]?\d{6}/,yd=/\d\d?/,zd=/\d\d\d\d?/,Ad=/\d\d\d\d\d\d?/,Bd=/\d{1,3}/,Cd=/\d{1,4}/,Dd=/[+-]?\d{1,6}/,Ed=/\d+/,Fd=/[+-]?\d+/,Gd=/Z|[+-]\d\d:?\d\d/gi,Hd=/Z|[+-]\d\d(?::?\d\d)?/gi,Id=/[+-]?\d+(\.\d{1,3})?/,Jd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u06
 00-\u06FF]+){1,2}/i,Kd={},Ld={},Md=0,Nd=1,Od=2,Pd=3,Qd=4,Rd=5,Sd=6,Td=7,Ud=8;md=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1},R("M",["MM",2],"Mo",function(){return this.month()+1}),R("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),R("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),W("M",yd),W("MM",yd,ud),W("MMM",function(a,b){return b.monthsShortRegex(a)}),W("MMMM",function(a,b){return b.monthsRegex(a)}),$(["M","MM"],function(a,b){b[Nd]=r(a)-1}),$(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[Nd]=e:j(c).invalidMonth=a});var Vd=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Wd="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Xd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Yd=Jd,Zd=Jd,$d=/^\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)?)?/,_d=/^\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)?)?/,ae=/Z|[+-]\d\d(?::?\d\d)?/,be=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ce=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],de=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=u("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. 
 Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),R("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),R(0,["YY",2],0,function(){return this.year()%100}),R(0,["YYYY",4],0,"year"),R(0,["YYYYY",5],0,"year"),R(0,["YYYYYY",6,!0],0,"year"),J("year","y"),W("Y",Fd),W("YY",yd,ud),W("YYYY",Cd,wd),W("YYYYY",Dd,xd),W("YYYYYY",Dd,xd),$(["YYYYY","YYYYYY"],Md),$("YYYY",function(b,c){c[Md]=2===b.length?a.parseTwoDigitYear(b):r(b)}),$("YY",function(b,c){c[Md]=a.parseTwoDigitYear(b)}),$("Y",function(a,b){b[Md]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return r(a)+(r(a)>68?1900:2e3)};var ee=M("FullYear",!0);a.ISO_8601=function(){};var fe=u("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:l()}),ge=u("moment().max is deprecated, use moment.min instead. https://g
 ithub.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:l()}),he=function(){return Date.now?Date.now():+new Date};Qa("Z",":"),Qa("ZZ",""),W("Z",Hd),W("ZZ",Hd),$(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ra(Hd,a)});var ie=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var je=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,ke=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;db.fn=Oa.prototype;var le=ib(1,"add"),me=ib(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ne=u("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});R(0,["gg",2],0,function(){return this.weekYear()%100}),R(0,["GG",2],0,functio
 n(){return this.isoWeekYear()%100}),Pb("gggg","weekYear"),Pb("ggggg","weekYear"),Pb("GGGG","isoWeekYear"),Pb("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),W("G",Fd),W("g",Fd),W("GG",yd,ud),W("gg",yd,ud),W("GGGG",Cd,wd),W("gggg",Cd,wd),W("GGGGG",Dd,xd),W("ggggg",Dd,xd),_(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=r(a)}),_(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),R("Q",0,"Qo","quarter"),J("quarter","Q"),W("Q",td),$("Q",function(a,b){b[Nd]=3*(r(a)-1)}),R("w",["ww",2],"wo","week"),R("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),W("w",yd),W("ww",yd,ud),W("W",yd),W("WW",yd,ud),_(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=r(a)});var oe={dow:0,doy:6};R("D",["DD",2],"Do","date"),J("date","D"),W("D",yd),W("DD",yd,ud),W("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),$(["D","DD"],Od),$("Do",function(a,b){b[Od]=r(a.match(yd)[0],10)});var pe=M("Date",!0);R("d",0,"do","day"),R("dd",0,0,func
 tion(a){return this.localeData().weekdaysMin(this,a)}),R("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),R("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),R("e",0,0,"weekday"),R("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),W("d",yd),W("e",yd),W("E",yd),W("dd",function(a,b){return b.weekdaysMinRegex(a)}),W("ddd",function(a,b){return b.weekdaysShortRegex(a)}),W("dddd",function(a,b){return b.weekdaysRegex(a)}),_(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:j(c).invalidWeekday=a}),_(["d","e","E"],function(a,b,c,d){b[d]=r(a)});var qe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),re="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),se="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),te=Jd,ue=Jd,ve=Jd;R("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),W("DDD",Bd),W("DDDD",vd),$(["DDD","DDDD"],function(a,b,c){c._dayOfYear=r(a)}),R("H",["HH",2],0,"hour"),R("h",["h
 h",2],0,oc),R("k",["kk",2],0,pc),R("hmm",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)}),R("hmmss",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)+Q(this.seconds(),2)}),R("Hmm",0,0,function(){return""+this.hours()+Q(this.minutes(),2)}),R("Hmmss",0,0,function(){return""+this.hours()+Q(this.minutes(),2)+Q(this.seconds(),2)}),qc("a",!0),qc("A",!1),J("hour","h"),W("a",rc),W("A",rc),W("H",yd),W("h",yd),W("HH",yd,ud),W("hh",yd,ud),W("hmm",zd),W("hmmss",Ad),W("Hmm",zd),W("Hmmss",Ad),$(["H","HH"],Pd),$(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),$(["h","hh"],function(a,b,c){b[Pd]=r(a),j(c).bigHour=!0}),$("hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d)),j(c).bigHour=!0}),$("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e)),j(c).bigHour=!0}),$("Hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d))}),$("Hmmss",functi
 on(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e))});var we=/[ap]\.?m?\.?/i,xe=M("Hours",!0);R("m",["mm",2],0,"minute"),J("minute","m"),W("m",yd),W("mm",yd,ud),$(["m","mm"],Qd);var ye=M("Minutes",!1);R("s",["ss",2],0,"second"),J("second","s"),W("s",yd),W("ss",yd,ud),$(["s","ss"],Rd);var ze=M("Seconds",!1);R("S",0,0,function(){return~~(this.millisecond()/100)}),R(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),R(0,["SSS",3],0,"millisecond"),R(0,["SSSS",4],0,function(){return 10*this.millisecond()}),R(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),R(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),R(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),R(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),R(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),W("S",Bd,td),W("SS",Bd,ud),W("SSS",Bd,vd);var Ae;for(Ae="SSSS";Ae.length<=9;Ae+="S")W(Ae,Ed
 );for(Ae="S";Ae.length<=9;Ae+="S")$(Ae,uc);var Be=M("Milliseconds",!1);R("z",0,0,"zoneAbbr"),R("zz",0,0,"zoneName");var Ce=o.prototype;Ce.add=le,Ce.calendar=kb,Ce.clone=lb,Ce.diff=sb,Ce.endOf=Eb,Ce.format=wb,Ce.from=xb,Ce.fromNow=yb,Ce.to=zb,Ce.toNow=Ab,Ce.get=P,Ce.invalidAt=Nb,Ce.isAfter=mb,Ce.isBefore=nb,Ce.isBetween=ob,Ce.isSame=pb,Ce.isSameOrAfter=qb,Ce.isSameOrBefore=rb,Ce.isValid=Lb,Ce.lang=ne,Ce.locale=Bb,Ce.localeData=Cb,Ce.max=ge,Ce.min=fe,Ce.parsingFlags=Mb,Ce.set=P,Ce.startOf=Db,Ce.subtract=me,Ce.toArray=Ib,Ce.toObject=Jb,Ce.toDate=Hb,Ce.toISOString=vb,Ce.toJSON=Kb,Ce.toString=ub,Ce.unix=Gb,Ce.valueOf=Fb,Ce.creationData=Ob,Ce.year=ee,Ce.isLeapYear=ta,Ce.weekYear=Qb,Ce.isoWeekYear=Rb,Ce.quarter=Ce.quarters=Wb,Ce.month=ha,Ce.daysInMonth=ia,Ce.week=Ce.weeks=$b,Ce.isoWeek=Ce.isoWeeks=_b,Ce.weeksInYear=Tb,Ce.isoWeeksInYear=Sb,Ce.date=pe,Ce.day=Ce.days=gc,Ce.weekday=hc,Ce.isoWeekday=ic,Ce.dayOfYear=nc,Ce.hour=Ce.hours=xe,Ce.minute=Ce.minutes=ye,Ce.second=Ce.seconds=ze,Ce.millis
 econd=Ce.milliseconds=Be,Ce.utcOffset=Ua,Ce.utc=Wa,Ce.local=Xa,Ce.parseZone=Ya,Ce.hasAlignedHourOffset=Za,Ce.isDST=$a,Ce.isDSTShifted=_a,Ce.isLocal=ab,Ce.isUtcOffset=bb,Ce.isUtc=cb,Ce.isUTC=cb,Ce.zoneAbbr=vc,Ce.zoneName=wc,Ce.dates=u("dates accessor is deprecated. Use date instead.",pe),Ce.months=u("months accessor is deprecated. Use month instead",ha),Ce.years=u("years accessor is deprecated. Use year instead",ee),Ce.zone=u("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Va);var De=Ce,Ee={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Fe={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ge="Invalid date",He="%d",Ie=/\d{1,2}/,Je={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M
 :"a month",MM:"%d months",y:"a year",yy:"%d years"},Ke=A.prototype;Ke._calendar=Ee,Ke.calendar=zc,Ke._longDateFormat=Fe,Ke.longDateFormat=Ac,Ke._invalidDate=Ge,Ke.invalidDate=Bc,Ke._ordinal=He,Ke.ordinal=Cc,Ke._ordinalParse=Ie,Ke.preparse=Dc,Ke.postformat=Dc,Ke._relativeTime=Je,Ke.relativeTime=Ec,Ke.pastFuture=Fc,Ke.set=y,Ke.months=ca,Ke._months=Wd,Ke.monthsShort=da,Ke._monthsShort=Xd,Ke.monthsParse=fa,Ke._monthsRegex=Zd,Ke.monthsRegex=ka,Ke._monthsShortRegex=Yd,Ke.monthsShortRegex=ja,Ke.week=Xb,Ke._week=oe,Ke.firstDayOfYear=Zb,Ke.firstDayOfWeek=Yb,Ke.weekdays=bc,Ke._weekdays=qe,Ke.weekdaysMin=dc,Ke._weekdaysMin=se,Ke.weekdaysShort=cc,Ke._weekdaysShort=re,Ke.weekdaysParse=fc,Ke._weekdaysRegex=te,Ke.weekdaysRegex=jc,Ke._weekdaysShortRegex=ue,Ke.weekdaysShortRegex=kc,Ke._weekdaysMinRegex=ve,Ke.weekdaysMinRegex=lc,Ke.isPM=sc,Ke._meridiemParse=we,Ke.meridiem=tc,E("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===r(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"
 rd":"th";return a+c}}),a.lang=u("moment.lang is deprecated. Use moment.locale instead.",E),a.langData=u("moment.langData is deprecated. Use moment.localeData instead.",H);var Le=Math.abs,Me=Yc("ms"),Ne=Yc("s"),Oe=Yc("m"),Pe=Yc("h"),Qe=Yc("d"),Re=Yc("w"),Se=Yc("M"),Te=Yc("y"),Ue=$c("milliseconds"),Ve=$c("seconds"),We=$c("minutes"),Xe=$c("hours"),Ye=$c("days"),Ze=$c("months"),$e=$c("years"),_e=Math.round,af={s:45,m:45,h:22,d:26,M:11},bf=Math.abs,cf=Oa.prototype;cf.abs=Oc,cf.add=Qc,cf.subtract=Rc,cf.as=Wc,cf.asMilliseconds=Me,cf.asSeconds=Ne,cf.asMinutes=Oe,cf.asHours=Pe,cf.asDays=Qe,cf.asWeeks=Re,cf.asMonths=Se,cf.asYears=Te,cf.valueOf=Xc,cf._bubble=Tc,cf.get=Zc,cf.milliseconds=Ue,cf.seconds=Ve,cf.minutes=We,cf.hours=Xe,cf.days=Ye,cf.weeks=_c,cf.months=Ze,cf.years=$e,cf.humanize=dd,cf.toISOString=ed,cf.toString=ed,cf.toJSON=ed,cf.locale=Bb,cf.localeData=Cb,cf.toIsoString=u("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ed),cf.lang=ne,R("X",0,0,"u
 nix"),R("x",0,0,"valueOf"),W("x",Fd),W("X",Id),$("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),$("x",function(a,b,c){c._d=new Date(r(a))}),a.version="2.13.0",b(Ka),a.fn=De,a.min=Ma,a.max=Na,a.now=he,a.utc=h,a.unix=xc,a.months=Jc,a.isDate=d,a.locale=E,a.invalid=l,a.duration=db,a.isMoment=p,a.weekdays=Lc,a.parseZone=yc,a.localeData=H,a.isDuration=Pa,a.monthsShort=Kc,a.weekdaysMin=Nc,a.defineLocale=F,a.updateLocale=G,a.locales=I,a.weekdaysShort=Mc,a.normalizeUnits=K,a.relativeTimeThreshold=cd,a.prototype=De;var df=a;return df});
\ No newline at end of file


[5/5] ambari git commit: Ambari-16017: Update Moment.js to latest stable version 2.13.0 (Sangeeta Ravindran via dili)

Posted by di...@apache.org.
Ambari-16017: Update Moment.js to latest stable version 2.13.0 (Sangeeta Ravindran via dili)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4e2d4aff
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4e2d4aff
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4e2d4aff

Branch: refs/heads/trunk
Commit: 4e2d4aff33ff466581b8da79ef9ce7175cc8d53f
Parents: 237715f
Author: Di Li <di...@apache.org>
Authored: Tue Jun 7 13:54:57 2016 -0400
Committer: Di Li <di...@apache.org>
Committed: Tue Jun 7 13:54:57 2016 -0400

----------------------------------------------------------------------
 ambari-web/config.coffee                        |    2 +-
 ambari-web/karma.conf.js                        |    2 +-
 ambari-web/vendor/scripts/moment.js             | 3195 -------
 ambari-web/vendor/scripts/moment.min.js         |    7 +
 .../slider/src/main/resources/ui/config.js      |    4 +-
 .../ui/vendor/scripts/common/moment.js          | 7768 ------------------
 .../ui/vendor/scripts/common/moment.min.js      |    7 +
 7 files changed, 18 insertions(+), 10967 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2d4aff/ambari-web/config.coffee
----------------------------------------------------------------------
diff --git a/ambari-web/config.coffee b/ambari-web/config.coffee
index 6ed0915..4a29e73 100644
--- a/ambari-web/config.coffee
+++ b/ambari-web/config.coffee
@@ -61,7 +61,7 @@ exports.config =
           'vendor/scripts/underscore.js',
           'vendor/scripts/backbone.js',
           'vendor/scripts/visualsearch.js',
-          'vendor/scripts/moment.js',
+          'vendor/scripts/moment.min.js',
           'vendor/scripts/moment-timezone-with-data-2010-2020.js',
           'vendor/scripts/workflow_visualization.js',
           'vendor/scripts/rickshaw.js',

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2d4aff/ambari-web/karma.conf.js
----------------------------------------------------------------------
diff --git a/ambari-web/karma.conf.js b/ambari-web/karma.conf.js
index b11cf76..013cc2e 100644
--- a/ambari-web/karma.conf.js
+++ b/ambari-web/karma.conf.js
@@ -78,7 +78,7 @@ module.exports = function(config) {
       'vendor/scripts/jquery.flexibleArea.js',
       'vendor/scripts/FileSaver.js',
       'vendor/scripts/Blob.js',
-      'vendor/scripts/moment.js',
+      'vendor/scripts/moment.min.js',
       'vendor/scripts/moment-timezone-with-data-2010-2020.js',
       'vendor/**/*.js',
       'app/templates/**/*.hbs',


[4/5] ambari git commit: Ambari-16017: Update Moment.js to latest stable version 2.13.0 (Sangeeta Ravindran via dili)

Posted by di...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2d4aff/ambari-web/vendor/scripts/moment.js
----------------------------------------------------------------------
diff --git a/ambari-web/vendor/scripts/moment.js b/ambari-web/vendor/scripts/moment.js
deleted file mode 100644
index fe0e19c..0000000
--- a/ambari-web/vendor/scripts/moment.js
+++ /dev/null
@@ -1,3195 +0,0 @@
-//! moment.js
-//! version : 2.10.6
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-      global.moment = factory()
-}(this, function () { 'use strict';
-
-  var hookCallback;
-
-  function utils_hooks__hooks () {
-    return hookCallback.apply(null, arguments);
-  }
-
-  // This is done to register the method called with moment()
-  // without creating circular dependencies.
-  function setHookCallback (callback) {
-    hookCallback = callback;
-  }
-
-  function isArray(input) {
-    return Object.prototype.toString.call(input) === '[object Array]';
-  }
-
-  function isDate(input) {
-    return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
-  }
-
-  function map(arr, fn) {
-    var res = [], i;
-    for (i = 0; i < arr.length; ++i) {
-      res.push(fn(arr[i], i));
-    }
-    return res;
-  }
-
-  function hasOwnProp(a, b) {
-    return Object.prototype.hasOwnProperty.call(a, b);
-  }
-
-  function extend(a, b) {
-    for (var i in b) {
-      if (hasOwnProp(b, i)) {
-        a[i] = b[i];
-      }
-    }
-
-    if (hasOwnProp(b, 'toString')) {
-      a.toString = b.toString;
-    }
-
-    if (hasOwnProp(b, 'valueOf')) {
-      a.valueOf = b.valueOf;
-    }
-
-    return a;
-  }
-
-  function create_utc__createUTC (input, format, locale, strict) {
-    return createLocalOrUTC(input, format, locale, strict, true).utc();
-  }
-
-  function defaultParsingFlags() {
-    // We need to deep clone this object.
-    return {
-      empty           : false,
-      unusedTokens    : [],
-      unusedInput     : [],
-      overflow        : -2,
-      charsLeftOver   : 0,
-      nullInput       : false,
-      invalidMonth    : null,
-      invalidFormat   : false,
-      userInvalidated : false,
-      iso             : false
-    };
-  }
-
-  function getParsingFlags(m) {
-    if (m._pf == null) {
-      m._pf = defaultParsingFlags();
-    }
-    return m._pf;
-  }
-
-  function valid__isValid(m) {
-    if (m._isValid == null) {
-      var flags = getParsingFlags(m);
-      m._isValid = !isNaN(m._d.getTime()) &&
-        flags.overflow < 0 &&
-        !flags.empty &&
-        !flags.invalidMonth &&
-        !flags.invalidWeekday &&
-        !flags.nullInput &&
-        !flags.invalidFormat &&
-        !flags.userInvalidated;
-
-      if (m._strict) {
-        m._isValid = m._isValid &&
-          flags.charsLeftOver === 0 &&
-          flags.unusedTokens.length === 0 &&
-          flags.bigHour === undefined;
-      }
-    }
-    return m._isValid;
-  }
-
-  function valid__createInvalid (flags) {
-    var m = create_utc__createUTC(NaN);
-    if (flags != null) {
-      extend(getParsingFlags(m), flags);
-    }
-    else {
-      getParsingFlags(m).userInvalidated = true;
-    }
-
-    return m;
-  }
-
-  var momentProperties = utils_hooks__hooks.momentProperties = [];
-
-  function copyConfig(to, from) {
-    var i, prop, val;
-
-    if (typeof from._isAMomentObject !== 'undefined') {
-      to._isAMomentObject = from._isAMomentObject;
-    }
-    if (typeof from._i !== 'undefined') {
-      to._i = from._i;
-    }
-    if (typeof from._f !== 'undefined') {
-      to._f = from._f;
-    }
-    if (typeof from._l !== 'undefined') {
-      to._l = from._l;
-    }
-    if (typeof from._strict !== 'undefined') {
-      to._strict = from._strict;
-    }
-    if (typeof from._tzm !== 'undefined') {
-      to._tzm = from._tzm;
-    }
-    if (typeof from._isUTC !== 'undefined') {
-      to._isUTC = from._isUTC;
-    }
-    if (typeof from._offset !== 'undefined') {
-      to._offset = from._offset;
-    }
-    if (typeof from._pf !== 'undefined') {
-      to._pf = getParsingFlags(from);
-    }
-    if (typeof from._locale !== 'undefined') {
-      to._locale = from._locale;
-    }
-
-    if (momentProperties.length > 0) {
-      for (i in momentProperties) {
-        prop = momentProperties[i];
-        val = from[prop];
-        if (typeof val !== 'undefined') {
-          to[prop] = val;
-        }
-      }
-    }
-
-    return to;
-  }
-
-  var updateInProgress = false;
-
-  // Moment prototype object
-  function Moment(config) {
-    copyConfig(this, config);
-    this._d = new Date(config._d != null ? config._d.getTime() : NaN);
-    // Prevent infinite loop in case updateOffset creates new moment
-    // objects.
-    if (updateInProgress === false) {
-      updateInProgress = true;
-      utils_hooks__hooks.updateOffset(this);
-      updateInProgress = false;
-    }
-  }
-
-  function isMoment (obj) {
-    return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
-  }
-
-  function absFloor (number) {
-    if (number < 0) {
-      return Math.ceil(number);
-    } else {
-      return Math.floor(number);
-    }
-  }
-
-  function toInt(argumentForCoercion) {
-    var coercedNumber = +argumentForCoercion,
-      value = 0;
-
-    if (coercedNumber !== 0 && isFinite(coercedNumber)) {
-      value = absFloor(coercedNumber);
-    }
-
-    return value;
-  }
-
-  function compareArrays(array1, array2, dontConvert) {
-    var len = Math.min(array1.length, array2.length),
-      lengthDiff = Math.abs(array1.length - array2.length),
-      diffs = 0,
-      i;
-    for (i = 0; i < len; i++) {
-      if ((dontConvert && array1[i] !== array2[i]) ||
-        (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
-        diffs++;
-      }
-    }
-    return diffs + lengthDiff;
-  }
-
-  function Locale() {
-  }
-
-  var locales = {};
-  var globalLocale;
-
-  function normalizeLocale(key) {
-    return key ? key.toLowerCase().replace('_', '-') : key;
-  }
-
-  // pick the locale from the array
-  // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
-  // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
-  function chooseLocale(names) {
-    var i = 0, j, next, locale, split;
-
-    while (i < names.length) {
-      split = normalizeLocale(names[i]).split('-');
-      j = split.length;
-      next = normalizeLocale(names[i + 1]);
-      next = next ? next.split('-') : null;
-      while (j > 0) {
-        locale = loadLocale(split.slice(0, j).join('-'));
-        if (locale) {
-          return locale;
-        }
-        if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
-          //the next array item is better than a shallower substring of this one
-          break;
-        }
-        j--;
-      }
-      i++;
-    }
-    return null;
-  }
-
-  function loadLocale(name) {
-    var oldLocale = null;
-    // TODO: Find a better way to register and load all the locales in Node
-    if (!locales[name] && typeof module !== 'undefined' &&
-      module && module.exports) {
-      try {
-        oldLocale = globalLocale._abbr;
-        require('./locale/' + name);
-        // because defineLocale currently also sets the global locale, we
-        // want to undo that for lazy loaded locales
-        locale_locales__getSetGlobalLocale(oldLocale);
-      } catch (e) { }
-    }
-    return locales[name];
-  }
-
-  // This function will load locale and then set the global locale.  If
-  // no arguments are passed in, it will simply return the current global
-  // locale key.
-  function locale_locales__getSetGlobalLocale (key, values) {
-    var data;
-    if (key) {
-      if (typeof values === 'undefined') {
-        data = locale_locales__getLocale(key);
-      }
-      else {
-        data = defineLocale(key, values);
-      }
-
-      if (data) {
-        // moment.duration._locale = moment._locale = data;
-        globalLocale = data;
-      }
-    }
-
-    return globalLocale._abbr;
-  }
-
-  function defineLocale (name, values) {
-    if (values !== null) {
-      values.abbr = name;
-      locales[name] = locales[name] || new Locale();
-      locales[name].set(values);
-
-      // backwards compat for now: also set the locale
-      locale_locales__getSetGlobalLocale(name);
-
-      return locales[name];
-    } else {
-      // useful for testing
-      delete locales[name];
-      return null;
-    }
-  }
-
-  // returns locale data
-  function locale_locales__getLocale (key) {
-    var locale;
-
-    if (key && key._locale && key._locale._abbr) {
-      key = key._locale._abbr;
-    }
-
-    if (!key) {
-      return globalLocale;
-    }
-
-    if (!isArray(key)) {
-      //short-circuit everything else
-      locale = loadLocale(key);
-      if (locale) {
-        return locale;
-      }
-      key = [key];
-    }
-
-    return chooseLocale(key);
-  }
-
-  var aliases = {};
-
-  function addUnitAlias (unit, shorthand) {
-    var lowerCase = unit.toLowerCase();
-    aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
-  }
-
-  function normalizeUnits(units) {
-    return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
-  }
-
-  function normalizeObjectUnits(inputObject) {
-    var normalizedInput = {},
-      normalizedProp,
-      prop;
-
-    for (prop in inputObject) {
-      if (hasOwnProp(inputObject, prop)) {
-        normalizedProp = normalizeUnits(prop);
-        if (normalizedProp) {
-          normalizedInput[normalizedProp] = inputObject[prop];
-        }
-      }
-    }
-
-    return normalizedInput;
-  }
-
-  function makeGetSet (unit, keepTime) {
-    return function (value) {
-      if (value != null) {
-        get_set__set(this, unit, value);
-        utils_hooks__hooks.updateOffset(this, keepTime);
-        return this;
-      } else {
-        return get_set__get(this, unit);
-      }
-    };
-  }
-
-  function get_set__get (mom, unit) {
-    return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
-  }
-
-  function get_set__set (mom, unit, value) {
-    return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
-  }
-
-  // MOMENTS
-
-  function getSet (units, value) {
-    var unit;
-    if (typeof units === 'object') {
-      for (unit in units) {
-        this.set(unit, units[unit]);
-      }
-    } else {
-      units = normalizeUnits(units);
-      if (typeof this[units] === 'function') {
-        return this[units](value);
-      }
-    }
-    return this;
-  }
-
-  function zeroFill(number, targetLength, forceSign) {
-    var absNumber = '' + Math.abs(number),
-      zerosToFill = targetLength - absNumber.length,
-      sign = number >= 0;
-    return (sign ? (forceSign ? '+' : '') : '-') +
-      Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
-  }
-
-  var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
-
-  var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
-
-  var formatFunctions = {};
-
-  var formatTokenFunctions = {};
-
-  // token:    'M'
-  // padded:   ['MM', 2]
-  // ordinal:  'Mo'
-  // callback: function () { this.month() + 1 }
-  function addFormatToken (token, padded, ordinal, callback) {
-    var func = callback;
-    if (typeof callback === 'string') {
-      func = function () {
-        return this[callback]();
-      };
-    }
-    if (token) {
-      formatTokenFunctions[token] = func;
-    }
-    if (padded) {
-      formatTokenFunctions[padded[0]] = function () {
-        return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
-      };
-    }
-    if (ordinal) {
-      formatTokenFunctions[ordinal] = function () {
-        return this.localeData().ordinal(func.apply(this, arguments), token);
-      };
-    }
-  }
-
-  function removeFormattingTokens(input) {
-    if (input.match(/\[[\s\S]/)) {
-      return input.replace(/^\[|\]$/g, '');
-    }
-    return input.replace(/\\/g, '');
-  }
-
-  function makeFormatFunction(format) {
-    var array = format.match(formattingTokens), i, length;
-
-    for (i = 0, length = array.length; i < length; i++) {
-      if (formatTokenFunctions[array[i]]) {
-        array[i] = formatTokenFunctions[array[i]];
-      } else {
-        array[i] = removeFormattingTokens(array[i]);
-      }
-    }
-
-    return function (mom) {
-      var output = '';
-      for (i = 0; i < length; i++) {
-        output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
-      }
-      return output;
-    };
-  }
-
-  // format date using native date object
-  function formatMoment(m, format) {
-    if (!m.isValid()) {
-      return m.localeData().invalidDate();
-    }
-
-    format = expandFormat(format, m.localeData());
-    formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
-
-    return formatFunctions[format](m);
-  }
-
-  function expandFormat(format, locale) {
-    var i = 5;
-
-    function replaceLongDateFormatTokens(input) {
-      return locale.longDateFormat(input) || input;
-    }
-
-    localFormattingTokens.lastIndex = 0;
-    while (i >= 0 && localFormattingTokens.test(format)) {
-      format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
-      localFormattingTokens.lastIndex = 0;
-      i -= 1;
-    }
-
-    return format;
-  }
-
-  var match1         = /\d/;            //       0 - 9
-  var match2         = /\d\d/;          //      00 - 99
-  var match3         = /\d{3}/;         //     000 - 999
-  var match4         = /\d{4}/;         //    0000 - 9999
-  var match6         = /[+-]?\d{6}/;    // -999999 - 999999
-  var match1to2      = /\d\d?/;         //       0 - 99
-  var match1to3      = /\d{1,3}/;       //       0 - 999
-  var match1to4      = /\d{1,4}/;       //       0 - 9999
-  var match1to6      = /[+-]?\d{1,6}/;  // -999999 - 999999
-
-  var matchUnsigned  = /\d+/;           //       0 - inf
-  var matchSigned    = /[+-]?\d+/;      //    -inf - inf
-
-  var matchOffset    = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
-
-  var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
-
-  // any word (or two) characters or numbers including two/three word month in arabic.
-  var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
-
-  var regexes = {};
-
-  function isFunction (sth) {
-    // https://github.com/moment/moment/issues/2325
-    return typeof sth === 'function' &&
-      Object.prototype.toString.call(sth) === '[object Function]';
-  }
-
-
-  function addRegexToken (token, regex, strictRegex) {
-    regexes[token] = isFunction(regex) ? regex : function (isStrict) {
-      return (isStrict && strictRegex) ? strictRegex : regex;
-    };
-  }
-
-  function getParseRegexForToken (token, config) {
-    if (!hasOwnProp(regexes, token)) {
-      return new RegExp(unescapeFormat(token));
-    }
-
-    return regexes[token](config._strict, config._locale);
-  }
-
-  // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
-  function unescapeFormat(s) {
-    return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
-      return p1 || p2 || p3 || p4;
-    }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
-  }
-
-  var tokens = {};
-
-  function addParseToken (token, callback) {
-    var i, func = callback;
-    if (typeof token === 'string') {
-      token = [token];
-    }
-    if (typeof callback === 'number') {
-      func = function (input, array) {
-        array[callback] = toInt(input);
-      };
-    }
-    for (i = 0; i < token.length; i++) {
-      tokens[token[i]] = func;
-    }
-  }
-
-  function addWeekParseToken (token, callback) {
-    addParseToken(token, function (input, array, config, token) {
-      config._w = config._w || {};
-      callback(input, config._w, config, token);
-    });
-  }
-
-  function addTimeToArrayFromToken(token, input, config) {
-    if (input != null && hasOwnProp(tokens, token)) {
-      tokens[token](input, config._a, config, token);
-    }
-  }
-
-  var YEAR = 0;
-  var MONTH = 1;
-  var DATE = 2;
-  var HOUR = 3;
-  var MINUTE = 4;
-  var SECOND = 5;
-  var MILLISECOND = 6;
-
-  function daysInMonth(year, month) {
-    return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
-  }
-
-  // FORMATTING
-
-  addFormatToken('M', ['MM', 2], 'Mo', function () {
-    return this.month() + 1;
-  });
-
-  addFormatToken('MMM', 0, 0, function (format) {
-    return this.localeData().monthsShort(this, format);
-  });
-
-  addFormatToken('MMMM', 0, 0, function (format) {
-    return this.localeData().months(this, format);
-  });
-
-  // ALIASES
-
-  addUnitAlias('month', 'M');
-
-  // PARSING
-
-  addRegexToken('M',    match1to2);
-  addRegexToken('MM',   match1to2, match2);
-  addRegexToken('MMM',  matchWord);
-  addRegexToken('MMMM', matchWord);
-
-  addParseToken(['M', 'MM'], function (input, array) {
-    array[MONTH] = toInt(input) - 1;
-  });
-
-  addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
-    var month = config._locale.monthsParse(input, token, config._strict);
-    // if we didn't find a month name, mark the date as invalid.
-    if (month != null) {
-      array[MONTH] = month;
-    } else {
-      getParsingFlags(config).invalidMonth = input;
-    }
-  });
-
-  // LOCALES
-
-  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
-  function localeMonths (m) {
-    return this._months[m.month()];
-  }
-
-  var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
-  function localeMonthsShort (m) {
-    return this._monthsShort[m.month()];
-  }
-
-  function localeMonthsParse (monthName, format, strict) {
-    var i, mom, regex;
-
-    if (!this._monthsParse) {
-      this._monthsParse = [];
-      this._longMonthsParse = [];
-      this._shortMonthsParse = [];
-    }
-
-    for (i = 0; i < 12; i++) {
-      // make the regex if we don't have it already
-      mom = create_utc__createUTC([2000, i]);
-      if (strict && !this._longMonthsParse[i]) {
-        this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
-        this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
-      }
-      if (!strict && !this._monthsParse[i]) {
-        regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
-        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
-      }
-      // test the regex
-      if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
-        return i;
-      } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
-        return i;
-      } else if (!strict && this._monthsParse[i].test(monthName)) {
-        return i;
-      }
-    }
-  }
-
-  // MOMENTS
-
-  function setMonth (mom, value) {
-    var dayOfMonth;
-
-    // TODO: Move this out of here!
-    if (typeof value === 'string') {
-      value = mom.localeData().monthsParse(value);
-      // TODO: Another silent failure?
-      if (typeof value !== 'number') {
-        return mom;
-      }
-    }
-
-    dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
-    mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
-    return mom;
-  }
-
-  function getSetMonth (value) {
-    if (value != null) {
-      setMonth(this, value);
-      utils_hooks__hooks.updateOffset(this, true);
-      return this;
-    } else {
-      return get_set__get(this, 'Month');
-    }
-  }
-
-  function getDaysInMonth () {
-    return daysInMonth(this.year(), this.month());
-  }
-
-  function checkOverflow (m) {
-    var overflow;
-    var a = m._a;
-
-    if (a && getParsingFlags(m).overflow === -2) {
-      overflow =
-        a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :
-          a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
-            a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
-              a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :
-                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :
-                  a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
-                    -1;
-
-      if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
-        overflow = DATE;
-      }
-
-      getParsingFlags(m).overflow = overflow;
-    }
-
-    return m;
-  }
-
-  function warn(msg) {
-    if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {
-      console.warn('Deprecation warning: ' + msg);
-    }
-  }
-
-  function deprecate(msg, fn) {
-    var firstTime = true;
-
-    return extend(function () {
-      if (firstTime) {
-        warn(msg + '\n' + (new Error()).stack);
-        firstTime = false;
-      }
-      return fn.apply(this, arguments);
-    }, fn);
-  }
-
-  var deprecations = {};
-
-  function deprecateSimple(name, msg) {
-    if (!deprecations[name]) {
-      warn(msg);
-      deprecations[name] = true;
-    }
-  }
-
-  utils_hooks__hooks.suppressDeprecationWarnings = false;
-
-  var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
-
-  var isoDates = [
-    ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
-    ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
-    ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
-    ['GGGG-[W]WW', /\d{4}-W\d{2}/],
-    ['YYYY-DDD', /\d{4}-\d{3}/]
-  ];
-
-  // iso time formats and regexes
-  var isoTimes = [
-    ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
-    ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
-    ['HH:mm', /(T| )\d\d:\d\d/],
-    ['HH', /(T| )\d\d/]
-  ];
-
-  var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
-
-  // date from iso format
-  function configFromISO(config) {
-    var i, l,
-      string = config._i,
-      match = from_string__isoRegex.exec(string);
-
-    if (match) {
-      getParsingFlags(config).iso = true;
-      for (i = 0, l = isoDates.length; i < l; i++) {
-        if (isoDates[i][1].exec(string)) {
-          config._f = isoDates[i][0];
-          break;
-        }
-      }
-      for (i = 0, l = isoTimes.length; i < l; i++) {
-        if (isoTimes[i][1].exec(string)) {
-          // match[6] should be 'T' or space
-          config._f += (match[6] || ' ') + isoTimes[i][0];
-          break;
-        }
-      }
-      if (string.match(matchOffset)) {
-        config._f += 'Z';
-      }
-      configFromStringAndFormat(config);
-    } else {
-      config._isValid = false;
-    }
-  }
-
-  // date from iso format or fallback
-  function configFromString(config) {
-    var matched = aspNetJsonRegex.exec(config._i);
-
-    if (matched !== null) {
-      config._d = new Date(+matched[1]);
-      return;
-    }
-
-    configFromISO(config);
-    if (config._isValid === false) {
-      delete config._isValid;
-      utils_hooks__hooks.createFromInputFallback(config);
-    }
-  }
-
-  utils_hooks__hooks.createFromInputFallback = deprecate(
-    'moment construction falls back to js Date. This is ' +
-    'discouraged and will be removed in upcoming major ' +
-    'release. Please refer to ' +
-    'https://github.com/moment/moment/issues/1407 for more info.',
-    function (config) {
-      config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
-    }
-  );
-
-  function createDate (y, m, d, h, M, s, ms) {
-    //can't just apply() to create a date:
-    //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
-    var date = new Date(y, m, d, h, M, s, ms);
-
-    //the date constructor doesn't accept years < 1970
-    if (y < 1970) {
-      date.setFullYear(y);
-    }
-    return date;
-  }
-
-  function createUTCDate (y) {
-    var date = new Date(Date.UTC.apply(null, arguments));
-    if (y < 1970) {
-      date.setUTCFullYear(y);
-    }
-    return date;
-  }
-
-  addFormatToken(0, ['YY', 2], 0, function () {
-    return this.year() % 100;
-  });
-
-  addFormatToken(0, ['YYYY',   4],       0, 'year');
-  addFormatToken(0, ['YYYYY',  5],       0, 'year');
-  addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
-
-  // ALIASES
-
-  addUnitAlias('year', 'y');
-
-  // PARSING
-
-  addRegexToken('Y',      matchSigned);
-  addRegexToken('YY',     match1to2, match2);
-  addRegexToken('YYYY',   match1to4, match4);
-  addRegexToken('YYYYY',  match1to6, match6);
-  addRegexToken('YYYYYY', match1to6, match6);
-
-  addParseToken(['YYYYY', 'YYYYYY'], YEAR);
-  addParseToken('YYYY', function (input, array) {
-    array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);
-  });
-  addParseToken('YY', function (input, array) {
-    array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
-  });
-
-  // HELPERS
-
-  function daysInYear(year) {
-    return isLeapYear(year) ? 366 : 365;
-  }
-
-  function isLeapYear(year) {
-    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
-  }
-
-  // HOOKS
-
-  utils_hooks__hooks.parseTwoDigitYear = function (input) {
-    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
-  };
-
-  // MOMENTS
-
-  var getSetYear = makeGetSet('FullYear', false);
-
-  function getIsLeapYear () {
-    return isLeapYear(this.year());
-  }
-
-  addFormatToken('w', ['ww', 2], 'wo', 'week');
-  addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
-
-  // ALIASES
-
-  addUnitAlias('week', 'w');
-  addUnitAlias('isoWeek', 'W');
-
-  // PARSING
-
-  addRegexToken('w',  match1to2);
-  addRegexToken('ww', match1to2, match2);
-  addRegexToken('W',  match1to2);
-  addRegexToken('WW', match1to2, match2);
-
-  addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
-    week[token.substr(0, 1)] = toInt(input);
-  });
-
-  // HELPERS
-
-  // firstDayOfWeek       0 = sun, 6 = sat
-  //                      the day of the week that starts the week
-  //                      (usually sunday or monday)
-  // firstDayOfWeekOfYear 0 = sun, 6 = sat
-  //                      the first week is the week that contains the first
-  //                      of this day of the week
-  //                      (eg. ISO weeks use thursday (4))
-  function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
-    var end = firstDayOfWeekOfYear - firstDayOfWeek,
-      daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
-      adjustedMoment;
-
-
-    if (daysToDayOfWeek > end) {
-      daysToDayOfWeek -= 7;
-    }
-
-    if (daysToDayOfWeek < end - 7) {
-      daysToDayOfWeek += 7;
-    }
-
-    adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');
-    return {
-      week: Math.ceil(adjustedMoment.dayOfYear() / 7),
-      year: adjustedMoment.year()
-    };
-  }
-
-  // LOCALES
-
-  function localeWeek (mom) {
-    return weekOfYear(mom, this._week.dow, this._week.doy).week;
-  }
-
-  var defaultLocaleWeek = {
-    dow : 0, // Sunday is the first day of the week.
-    doy : 6  // The week that contains Jan 1st is the first week of the year.
-  };
-
-  function localeFirstDayOfWeek () {
-    return this._week.dow;
-  }
-
-  function localeFirstDayOfYear () {
-    return this._week.doy;
-  }
-
-  // MOMENTS
-
-  function getSetWeek (input) {
-    var week = this.localeData().week(this);
-    return input == null ? week : this.add((input - week) * 7, 'd');
-  }
-
-  function getSetISOWeek (input) {
-    var week = weekOfYear(this, 1, 4).week;
-    return input == null ? week : this.add((input - week) * 7, 'd');
-  }
-
-  addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
-
-  // ALIASES
-
-  addUnitAlias('dayOfYear', 'DDD');
-
-  // PARSING
-
-  addRegexToken('DDD',  match1to3);
-  addRegexToken('DDDD', match3);
-  addParseToken(['DDD', 'DDDD'], function (input, array, config) {
-    config._dayOfYear = toInt(input);
-  });
-
-  // HELPERS
-
-  //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-  function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
-    var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear;
-    if (d < firstDayOfWeek) {
-      d += 7;
-    }
-
-    weekday = weekday != null ? 1 * weekday : firstDayOfWeek;
-
-    dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday;
-
-    return {
-      year: dayOfYear > 0 ? year : year - 1,
-      dayOfYear: dayOfYear > 0 ?  dayOfYear : daysInYear(year - 1) + dayOfYear
-    };
-  }
-
-  // MOMENTS
-
-  function getSetDayOfYear (input) {
-    var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
-    return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
-  }
-
-  // Pick the first defined of two or three arguments.
-  function defaults(a, b, c) {
-    if (a != null) {
-      return a;
-    }
-    if (b != null) {
-      return b;
-    }
-    return c;
-  }
-
-  function currentDateArray(config) {
-    var now = new Date();
-    if (config._useUTC) {
-      return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];
-    }
-    return [now.getFullYear(), now.getMonth(), now.getDate()];
-  }
-
-  // convert an array to a date.
-  // the array should mirror the parameters below
-  // note: all values past the year are optional and will default to the lowest possible value.
-  // [year, month, day , hour, minute, second, millisecond]
-  function configFromArray (config) {
-    var i, date, input = [], currentDate, yearToUse;
-
-    if (config._d) {
-      return;
-    }
-
-    currentDate = currentDateArray(config);
-
-    //compute day of the year from weeks and weekdays
-    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
-      dayOfYearFromWeekInfo(config);
-    }
-
-    //if the day of the year is set, figure out what it is
-    if (config._dayOfYear) {
-      yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
-
-      if (config._dayOfYear > daysInYear(yearToUse)) {
-        getParsingFlags(config)._overflowDayOfYear = true;
-      }
-
-      date = createUTCDate(yearToUse, 0, config._dayOfYear);
-      config._a[MONTH] = date.getUTCMonth();
-      config._a[DATE] = date.getUTCDate();
-    }
-
-    // Default to current date.
-    // * if no year, month, day of month are given, default to today
-    // * if day of month is given, default month and year
-    // * if month is given, default only year
-    // * if year is given, don't default anything
-    for (i = 0; i < 3 && config._a[i] == null; ++i) {
-      config._a[i] = input[i] = currentDate[i];
-    }
-
-    // Zero out whatever was not defaulted, including time
-    for (; i < 7; i++) {
-      config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
-    }
-
-    // Check for 24:00:00.000
-    if (config._a[HOUR] === 24 &&
-      config._a[MINUTE] === 0 &&
-      config._a[SECOND] === 0 &&
-      config._a[MILLISECOND] === 0) {
-      config._nextDay = true;
-      config._a[HOUR] = 0;
-    }
-
-    config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
-    // Apply timezone offset from input. The actual utcOffset can be changed
-    // with parseZone.
-    if (config._tzm != null) {
-      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-    }
-
-    if (config._nextDay) {
-      config._a[HOUR] = 24;
-    }
-  }
-
-  function dayOfYearFromWeekInfo(config) {
-    var w, weekYear, week, weekday, dow, doy, temp;
-
-    w = config._w;
-    if (w.GG != null || w.W != null || w.E != null) {
-      dow = 1;
-      doy = 4;
-
-      // TODO: We need to take the current isoWeekYear, but that depends on
-      // how we interpret now (local, utc, fixed offset). So create
-      // a now version of current config (take local/utc/offset flags, and
-      // create now).
-      weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
-      week = defaults(w.W, 1);
-      weekday = defaults(w.E, 1);
-    } else {
-      dow = config._locale._week.dow;
-      doy = config._locale._week.doy;
-
-      weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
-      week = defaults(w.w, 1);
-
-      if (w.d != null) {
-        // weekday -- low day numbers are considered next week
-        weekday = w.d;
-        if (weekday < dow) {
-          ++week;
-        }
-      } else if (w.e != null) {
-        // local weekday -- counting starts from begining of week
-        weekday = w.e + dow;
-      } else {
-        // default to begining of week
-        weekday = dow;
-      }
-    }
-    temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
-
-    config._a[YEAR] = temp.year;
-    config._dayOfYear = temp.dayOfYear;
-  }
-
-  utils_hooks__hooks.ISO_8601 = function () {};
-
-  // date from string and format string
-  function configFromStringAndFormat(config) {
-    // TODO: Move this to another part of the creation flow to prevent circular deps
-    if (config._f === utils_hooks__hooks.ISO_8601) {
-      configFromISO(config);
-      return;
-    }
-
-    config._a = [];
-    getParsingFlags(config).empty = true;
-
-    // This array is used to make a Date, either with `new Date` or `Date.UTC`
-    var string = '' + config._i,
-      i, parsedInput, tokens, token, skipped,
-      stringLength = string.length,
-      totalParsedInputLength = 0;
-
-    tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
-
-    for (i = 0; i < tokens.length; i++) {
-      token = tokens[i];
-      parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
-      if (parsedInput) {
-        skipped = string.substr(0, string.indexOf(parsedInput));
-        if (skipped.length > 0) {
-          getParsingFlags(config).unusedInput.push(skipped);
-        }
-        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
-        totalParsedInputLength += parsedInput.length;
-      }
-      // don't parse if it's not a known token
-      if (formatTokenFunctions[token]) {
-        if (parsedInput) {
-          getParsingFlags(config).empty = false;
-        }
-        else {
-          getParsingFlags(config).unusedTokens.push(token);
-        }
-        addTimeToArrayFromToken(token, parsedInput, config);
-      }
-      else if (config._strict && !parsedInput) {
-        getParsingFlags(config).unusedTokens.push(token);
-      }
-    }
-
-    // add remaining unparsed input length to the string
-    getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
-    if (string.length > 0) {
-      getParsingFlags(config).unusedInput.push(string);
-    }
-
-    // clear _12h flag if hour is <= 12
-    if (getParsingFlags(config).bigHour === true &&
-      config._a[HOUR] <= 12 &&
-      config._a[HOUR] > 0) {
-      getParsingFlags(config).bigHour = undefined;
-    }
-    // handle meridiem
-    config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
-
-    configFromArray(config);
-    checkOverflow(config);
-  }
-
-
-  function meridiemFixWrap (locale, hour, meridiem) {
-    var isPm;
-
-    if (meridiem == null) {
-      // nothing to do
-      return hour;
-    }
-    if (locale.meridiemHour != null) {
-      return locale.meridiemHour(hour, meridiem);
-    } else if (locale.isPM != null) {
-      // Fallback
-      isPm = locale.isPM(meridiem);
-      if (isPm && hour < 12) {
-        hour += 12;
-      }
-      if (!isPm && hour === 12) {
-        hour = 0;
-      }
-      return hour;
-    } else {
-      // this is not supposed to happen
-      return hour;
-    }
-  }
-
-  function configFromStringAndArray(config) {
-    var tempConfig,
-      bestMoment,
-
-      scoreToBeat,
-      i,
-      currentScore;
-
-    if (config._f.length === 0) {
-      getParsingFlags(config).invalidFormat = true;
-      config._d = new Date(NaN);
-      return;
-    }
-
-    for (i = 0; i < config._f.length; i++) {
-      currentScore = 0;
-      tempConfig = copyConfig({}, config);
-      if (config._useUTC != null) {
-        tempConfig._useUTC = config._useUTC;
-      }
-      tempConfig._f = config._f[i];
-      configFromStringAndFormat(tempConfig);
-
-      if (!valid__isValid(tempConfig)) {
-        continue;
-      }
-
-      // if there is any input that was not parsed add a penalty for that format
-      currentScore += getParsingFlags(tempConfig).charsLeftOver;
-
-      //or tokens
-      currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
-
-      getParsingFlags(tempConfig).score = currentScore;
-
-      if (scoreToBeat == null || currentScore < scoreToBeat) {
-        scoreToBeat = currentScore;
-        bestMoment = tempConfig;
-      }
-    }
-
-    extend(config, bestMoment || tempConfig);
-  }
-
-  function configFromObject(config) {
-    if (config._d) {
-      return;
-    }
-
-    var i = normalizeObjectUnits(config._i);
-    config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];
-
-    configFromArray(config);
-  }
-
-  function createFromConfig (config) {
-    var res = new Moment(checkOverflow(prepareConfig(config)));
-    if (res._nextDay) {
-      // Adding is smart enough around DST
-      res.add(1, 'd');
-      res._nextDay = undefined;
-    }
-
-    return res;
-  }
-
-  function prepareConfig (config) {
-    var input = config._i,
-      format = config._f;
-
-    config._locale = config._locale || locale_locales__getLocale(config._l);
-
-    if (input === null || (format === undefined && input === '')) {
-      return valid__createInvalid({nullInput: true});
-    }
-
-    if (typeof input === 'string') {
-      config._i = input = config._locale.preparse(input);
-    }
-
-    if (isMoment(input)) {
-      return new Moment(checkOverflow(input));
-    } else if (isArray(format)) {
-      configFromStringAndArray(config);
-    } else if (format) {
-      configFromStringAndFormat(config);
-    } else if (isDate(input)) {
-      config._d = input;
-    } else {
-      configFromInput(config);
-    }
-
-    return config;
-  }
-
-  function configFromInput(config) {
-    var input = config._i;
-    if (input === undefined) {
-      config._d = new Date();
-    } else if (isDate(input)) {
-      config._d = new Date(+input);
-    } else if (typeof input === 'string') {
-      configFromString(config);
-    } else if (isArray(input)) {
-      config._a = map(input.slice(0), function (obj) {
-        return parseInt(obj, 10);
-      });
-      configFromArray(config);
-    } else if (typeof(input) === 'object') {
-      configFromObject(config);
-    } else if (typeof(input) === 'number') {
-      // from milliseconds
-      config._d = new Date(input);
-    } else {
-      utils_hooks__hooks.createFromInputFallback(config);
-    }
-  }
-
-  function createLocalOrUTC (input, format, locale, strict, isUTC) {
-    var c = {};
-
-    if (typeof(locale) === 'boolean') {
-      strict = locale;
-      locale = undefined;
-    }
-    // object construction must be done this way.
-    // https://github.com/moment/moment/issues/1423
-    c._isAMomentObject = true;
-    c._useUTC = c._isUTC = isUTC;
-    c._l = locale;
-    c._i = input;
-    c._f = format;
-    c._strict = strict;
-
-    return createFromConfig(c);
-  }
-
-  function local__createLocal (input, format, locale, strict) {
-    return createLocalOrUTC(input, format, locale, strict, false);
-  }
-
-  var prototypeMin = deprecate(
-    'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
-    function () {
-      var other = local__createLocal.apply(null, arguments);
-      return other < this ? this : other;
-    }
-  );
-
-  var prototypeMax = deprecate(
-    'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
-    function () {
-      var other = local__createLocal.apply(null, arguments);
-      return other > this ? this : other;
-    }
-  );
-
-  // Pick a moment m from moments so that m[fn](other) is true for all
-  // other. This relies on the function fn to be transitive.
-  //
-  // moments should either be an array of moment objects or an array, whose
-  // first element is an array of moment objects.
-  function pickBy(fn, moments) {
-    var res, i;
-    if (moments.length === 1 && isArray(moments[0])) {
-      moments = moments[0];
-    }
-    if (!moments.length) {
-      return local__createLocal();
-    }
-    res = moments[0];
-    for (i = 1; i < moments.length; ++i) {
-      if (!moments[i].isValid() || moments[i][fn](res)) {
-        res = moments[i];
-      }
-    }
-    return res;
-  }
-
-  // TODO: Use [].sort instead?
-  function min () {
-    var args = [].slice.call(arguments, 0);
-
-    return pickBy('isBefore', args);
-  }
-
-  function max () {
-    var args = [].slice.call(arguments, 0);
-
-    return pickBy('isAfter', args);
-  }
-
-  function Duration (duration) {
-    var normalizedInput = normalizeObjectUnits(duration),
-      years = normalizedInput.year || 0,
-      quarters = normalizedInput.quarter || 0,
-      months = normalizedInput.month || 0,
-      weeks = normalizedInput.week || 0,
-      days = normalizedInput.day || 0,
-      hours = normalizedInput.hour || 0,
-      minutes = normalizedInput.minute || 0,
-      seconds = normalizedInput.second || 0,
-      milliseconds = normalizedInput.millisecond || 0;
-
-    // representation for dateAddRemove
-    this._milliseconds = +milliseconds +
-      seconds * 1e3 + // 1000
-      minutes * 6e4 + // 1000 * 60
-      hours * 36e5; // 1000 * 60 * 60
-    // Because of dateAddRemove treats 24 hours as different from a
-    // day when working around DST, we need to store them separately
-    this._days = +days +
-      weeks * 7;
-    // It is impossible translate months into days without knowing
-    // which months you are are talking about, so we have to store
-    // it separately.
-    this._months = +months +
-      quarters * 3 +
-      years * 12;
-
-    this._data = {};
-
-    this._locale = locale_locales__getLocale();
-
-    this._bubble();
-  }
-
-  function isDuration (obj) {
-    return obj instanceof Duration;
-  }
-
-  function offset (token, separator) {
-    addFormatToken(token, 0, 0, function () {
-      var offset = this.utcOffset();
-      var sign = '+';
-      if (offset < 0) {
-        offset = -offset;
-        sign = '-';
-      }
-      return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
-    });
-  }
-
-  offset('Z', ':');
-  offset('ZZ', '');
-
-  // PARSING
-
-  addRegexToken('Z',  matchOffset);
-  addRegexToken('ZZ', matchOffset);
-  addParseToken(['Z', 'ZZ'], function (input, array, config) {
-    config._useUTC = true;
-    config._tzm = offsetFromString(input);
-  });
-
-  // HELPERS
-
-  // timezone chunker
-  // '+10:00' > ['10',  '00']
-  // '-1530'  > ['-15', '30']
-  var chunkOffset = /([\+\-]|\d\d)/gi;
-
-  function offsetFromString(string) {
-    var matches = ((string || '').match(matchOffset) || []);
-    var chunk   = matches[matches.length - 1] || [];
-    var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];
-    var minutes = +(parts[1] * 60) + toInt(parts[2]);
-
-    return parts[0] === '+' ? minutes : -minutes;
-  }
-
-  // Return a moment from input, that is local/utc/zone equivalent to model.
-  function cloneWithOffset(input, model) {
-    var res, diff;
-    if (model._isUTC) {
-      res = model.clone();
-      diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res);
-      // Use low-level api, because this fn is low-level api.
-      res._d.setTime(+res._d + diff);
-      utils_hooks__hooks.updateOffset(res, false);
-      return res;
-    } else {
-      return local__createLocal(input).local();
-    }
-  }
-
-  function getDateOffset (m) {
-    // On Firefox.24 Date#getTimezoneOffset returns a floating point.
-    // https://github.com/moment/moment/pull/1871
-    return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
-  }
-
-  // HOOKS
-
-  // This function will be called whenever a moment is mutated.
-  // It is intended to keep the offset in sync with the timezone.
-  utils_hooks__hooks.updateOffset = function () {};
-
-  // MOMENTS
-
-  // keepLocalTime = true means only change the timezone, without
-  // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
-  // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
-  // +0200, so we adjust the time as needed, to be valid.
-  //
-  // Keeping the time actually adds/subtracts (one hour)
-  // from the actual represented time. That is why we call updateOffset
-  // a second time. In case it wants us to change the offset again
-  // _changeInProgress == true case, then we have to adjust, because
-  // there is no such time in the given timezone.
-  function getSetOffset (input, keepLocalTime) {
-    var offset = this._offset || 0,
-      localAdjust;
-    if (input != null) {
-      if (typeof input === 'string') {
-        input = offsetFromString(input);
-      }
-      if (Math.abs(input) < 16) {
-        input = input * 60;
-      }
-      if (!this._isUTC && keepLocalTime) {
-        localAdjust = getDateOffset(this);
-      }
-      this._offset = input;
-      this._isUTC = true;
-      if (localAdjust != null) {
-        this.add(localAdjust, 'm');
-      }
-      if (offset !== input) {
-        if (!keepLocalTime || this._changeInProgress) {
-          add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
-        } else if (!this._changeInProgress) {
-          this._changeInProgress = true;
-          utils_hooks__hooks.updateOffset(this, true);
-          this._changeInProgress = null;
-        }
-      }
-      return this;
-    } else {
-      return this._isUTC ? offset : getDateOffset(this);
-    }
-  }
-
-  function getSetZone (input, keepLocalTime) {
-    if (input != null) {
-      if (typeof input !== 'string') {
-        input = -input;
-      }
-
-      this.utcOffset(input, keepLocalTime);
-
-      return this;
-    } else {
-      return -this.utcOffset();
-    }
-  }
-
-  function setOffsetToUTC (keepLocalTime) {
-    return this.utcOffset(0, keepLocalTime);
-  }
-
-  function setOffsetToLocal (keepLocalTime) {
-    if (this._isUTC) {
-      this.utcOffset(0, keepLocalTime);
-      this._isUTC = false;
-
-      if (keepLocalTime) {
-        this.subtract(getDateOffset(this), 'm');
-      }
-    }
-    return this;
-  }
-
-  function setOffsetToParsedOffset () {
-    if (this._tzm) {
-      this.utcOffset(this._tzm);
-    } else if (typeof this._i === 'string') {
-      this.utcOffset(offsetFromString(this._i));
-    }
-    return this;
-  }
-
-  function hasAlignedHourOffset (input) {
-    input = input ? local__createLocal(input).utcOffset() : 0;
-
-    return (this.utcOffset() - input) % 60 === 0;
-  }
-
-  function isDaylightSavingTime () {
-    return (
-      this.utcOffset() > this.clone().month(0).utcOffset() ||
-      this.utcOffset() > this.clone().month(5).utcOffset()
-    );
-  }
-
-  function isDaylightSavingTimeShifted () {
-    if (typeof this._isDSTShifted !== 'undefined') {
-      return this._isDSTShifted;
-    }
-
-    var c = {};
-
-    copyConfig(c, this);
-    c = prepareConfig(c);
-
-    if (c._a) {
-      var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
-      this._isDSTShifted = this.isValid() &&
-        compareArrays(c._a, other.toArray()) > 0;
-    } else {
-      this._isDSTShifted = false;
-    }
-
-    return this._isDSTShifted;
-  }
-
-  function isLocal () {
-    return !this._isUTC;
-  }
-
-  function isUtcOffset () {
-    return this._isUTC;
-  }
-
-  function isUtc () {
-    return this._isUTC && this._offset === 0;
-  }
-
-  var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/;
-
-  // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
-  // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
-  var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;
-
-  function create__createDuration (input, key) {
-    var duration = input,
-    // matching against regexp is expensive, do it on demand
-      match = null,
-      sign,
-      ret,
-      diffRes;
-
-    if (isDuration(input)) {
-      duration = {
-        ms : input._milliseconds,
-        d  : input._days,
-        M  : input._months
-      };
-    } else if (typeof input === 'number') {
-      duration = {};
-      if (key) {
-        duration[key] = input;
-      } else {
-        duration.milliseconds = input;
-      }
-    } else if (!!(match = aspNetRegex.exec(input))) {
-      sign = (match[1] === '-') ? -1 : 1;
-      duration = {
-        y  : 0,
-        d  : toInt(match[DATE])        * sign,
-        h  : toInt(match[HOUR])        * sign,
-        m  : toInt(match[MINUTE])      * sign,
-        s  : toInt(match[SECOND])      * sign,
-        ms : toInt(match[MILLISECOND]) * sign
-      };
-    } else if (!!(match = create__isoRegex.exec(input))) {
-      sign = (match[1] === '-') ? -1 : 1;
-      duration = {
-        y : parseIso(match[2], sign),
-        M : parseIso(match[3], sign),
-        d : parseIso(match[4], sign),
-        h : parseIso(match[5], sign),
-        m : parseIso(match[6], sign),
-        s : parseIso(match[7], sign),
-        w : parseIso(match[8], sign)
-      };
-    } else if (duration == null) {// checks for null or undefined
-      duration = {};
-    } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
-      diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
-
-      duration = {};
-      duration.ms = diffRes.milliseconds;
-      duration.M = diffRes.months;
-    }
-
-    ret = new Duration(duration);
-
-    if (isDuration(input) && hasOwnProp(input, '_locale')) {
-      ret._locale = input._locale;
-    }
-
-    return ret;
-  }
-
-  create__createDuration.fn = Duration.prototype;
-
-  function parseIso (inp, sign) {
-    // We'd normally use ~~inp for this, but unfortunately it also
-    // converts floats to ints.
-    // inp may be undefined, so careful calling replace on it.
-    var res = inp && parseFloat(inp.replace(',', '.'));
-    // apply sign while we're at it
-    return (isNaN(res) ? 0 : res) * sign;
-  }
-
-  function positiveMomentsDifference(base, other) {
-    var res = {milliseconds: 0, months: 0};
-
-    res.months = other.month() - base.month() +
-      (other.year() - base.year()) * 12;
-    if (base.clone().add(res.months, 'M').isAfter(other)) {
-      --res.months;
-    }
-
-    res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
-
-    return res;
-  }
-
-  function momentsDifference(base, other) {
-    var res;
-    other = cloneWithOffset(other, base);
-    if (base.isBefore(other)) {
-      res = positiveMomentsDifference(base, other);
-    } else {
-      res = positiveMomentsDifference(other, base);
-      res.milliseconds = -res.milliseconds;
-      res.months = -res.months;
-    }
-
-    return res;
-  }
-
-  function createAdder(direction, name) {
-    return function (val, period) {
-      var dur, tmp;
-      //invert the arguments, but complain about it
-      if (period !== null && !isNaN(+period)) {
-        deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
-        tmp = val; val = period; period = tmp;
-      }
-
-      val = typeof val === 'string' ? +val : val;
-      dur = create__createDuration(val, period);
-      add_subtract__addSubtract(this, dur, direction);
-      return this;
-    };
-  }
-
-  function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
-    var milliseconds = duration._milliseconds,
-      days = duration._days,
-      months = duration._months;
-    updateOffset = updateOffset == null ? true : updateOffset;
-
-    if (milliseconds) {
-      mom._d.setTime(+mom._d + milliseconds * isAdding);
-    }
-    if (days) {
-      get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
-    }
-    if (months) {
-      setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
-    }
-    if (updateOffset) {
-      utils_hooks__hooks.updateOffset(mom, days || months);
-    }
-  }
-
-  var add_subtract__add      = createAdder(1, 'add');
-  var add_subtract__subtract = createAdder(-1, 'subtract');
-
-  function moment_calendar__calendar (time, formats) {
-    // We want to compare the start of today, vs this.
-    // Getting start-of-today depends on whether we're local/utc/offset or not.
-    var now = time || local__createLocal(),
-      sod = cloneWithOffset(now, this).startOf('day'),
-      diff = this.diff(sod, 'days', true),
-      format = diff < -6 ? 'sameElse' :
-        diff < -1 ? 'lastWeek' :
-          diff < 0 ? 'lastDay' :
-            diff < 1 ? 'sameDay' :
-              diff < 2 ? 'nextDay' :
-                diff < 7 ? 'nextWeek' : 'sameElse';
-    return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now)));
-  }
-
-  function clone () {
-    return new Moment(this);
-  }
-
-  function isAfter (input, units) {
-    var inputMs;
-    units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
-    if (units === 'millisecond') {
-      input = isMoment(input) ? input : local__createLocal(input);
-      return +this > +input;
-    } else {
-      inputMs = isMoment(input) ? +input : +local__createLocal(input);
-      return inputMs < +this.clone().startOf(units);
-    }
-  }
-
-  function isBefore (input, units) {
-    var inputMs;
-    units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
-    if (units === 'millisecond') {
-      input = isMoment(input) ? input : local__createLocal(input);
-      return +this < +input;
-    } else {
-      inputMs = isMoment(input) ? +input : +local__createLocal(input);
-      return +this.clone().endOf(units) < inputMs;
-    }
-  }
-
-  function isBetween (from, to, units) {
-    return this.isAfter(from, units) && this.isBefore(to, units);
-  }
-
-  function isSame (input, units) {
-    var inputMs;
-    units = normalizeUnits(units || 'millisecond');
-    if (units === 'millisecond') {
-      input = isMoment(input) ? input : local__createLocal(input);
-      return +this === +input;
-    } else {
-      inputMs = +local__createLocal(input);
-      return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
-    }
-  }
-
-  function diff (input, units, asFloat) {
-    var that = cloneWithOffset(input, this),
-      zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,
-      delta, output;
-
-    units = normalizeUnits(units);
-
-    if (units === 'year' || units === 'month' || units === 'quarter') {
-      output = monthDiff(this, that);
-      if (units === 'quarter') {
-        output = output / 3;
-      } else if (units === 'year') {
-        output = output / 12;
-      }
-    } else {
-      delta = this - that;
-      output = units === 'second' ? delta / 1e3 : // 1000
-        units === 'minute' ? delta / 6e4 : // 1000 * 60
-          units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
-            units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
-              units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
-                delta;
-    }
-    return asFloat ? output : absFloor(output);
-  }
-
-  function monthDiff (a, b) {
-    // difference in months
-    var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
-    // b is in (anchor - 1 month, anchor + 1 month)
-      anchor = a.clone().add(wholeMonthDiff, 'months'),
-      anchor2, adjust;
-
-    if (b - anchor < 0) {
-      anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
-      // linear across the month
-      adjust = (b - anchor) / (anchor - anchor2);
-    } else {
-      anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
-      // linear across the month
-      adjust = (b - anchor) / (anchor2 - anchor);
-    }
-
-    return -(wholeMonthDiff + adjust);
-  }
-
-  utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
-
-  function toString () {
-    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
-  }
-
-  function moment_format__toISOString () {
-    var m = this.clone().utc();
-    if (0 < m.year() && m.year() <= 9999) {
-      if ('function' === typeof Date.prototype.toISOString) {
-        // native implementation is ~50x faster, use it when we can
-        return this.toDate().toISOString();
-      } else {
-        return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
-      }
-    } else {
-      return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
-    }
-  }
-
-  function format (inputString) {
-    var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
-    return this.localeData().postformat(output);
-  }
-
-  function from (time, withoutSuffix) {
-    if (!this.isValid()) {
-      return this.localeData().invalidDate();
-    }
-    return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
-  }
-
-  function fromNow (withoutSuffix) {
-    return this.from(local__createLocal(), withoutSuffix);
-  }
-
-  function to (time, withoutSuffix) {
-    if (!this.isValid()) {
-      return this.localeData().invalidDate();
-    }
-    return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
-  }
-
-  function toNow (withoutSuffix) {
-    return this.to(local__createLocal(), withoutSuffix);
-  }
-
-  function locale (key) {
-    var newLocaleData;
-
-    if (key === undefined) {
-      return this._locale._abbr;
-    } else {
-      newLocaleData = locale_locales__getLocale(key);
-      if (newLocaleData != null) {
-        this._locale = newLocaleData;
-      }
-      return this;
-    }
-  }
-
-  var lang = deprecate(
-    'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
-    function (key) {
-      if (key === undefined) {
-        return this.localeData();
-      } else {
-        return this.locale(key);
-      }
-    }
-  );
-
-  function localeData () {
-    return this._locale;
-  }
-
-  function startOf (units) {
-    units = normalizeUnits(units);
-    // the following switch intentionally omits break keywords
-    // to utilize falling through the cases.
-    switch (units) {
-      case 'year':
-        this.month(0);
-      /* falls through */
-      case 'quarter':
-      case 'month':
-        this.date(1);
-      /* falls through */
-      case 'week':
-      case 'isoWeek':
-      case 'day':
-        this.hours(0);
-      /* falls through */
-      case 'hour':
-        this.minutes(0);
-      /* falls through */
-      case 'minute':
-        this.seconds(0);
-      /* falls through */
-      case 'second':
-        this.milliseconds(0);
-    }
-
-    // weeks are a special case
-    if (units === 'week') {
-      this.weekday(0);
-    }
-    if (units === 'isoWeek') {
-      this.isoWeekday(1);
-    }
-
-    // quarters are also special
-    if (units === 'quarter') {
-      this.month(Math.floor(this.month() / 3) * 3);
-    }
-
-    return this;
-  }
-
-  function endOf (units) {
-    units = normalizeUnits(units);
-    if (units === undefined || units === 'millisecond') {
-      return this;
-    }
-    return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
-  }
-
-  function to_type__valueOf () {
-    return +this._d - ((this._offset || 0) * 60000);
-  }
-
-  function unix () {
-    return Math.floor(+this / 1000);
-  }
-
-  function toDate () {
-    return this._offset ? new Date(+this) : this._d;
-  }
-
-  function toArray () {
-    var m = this;
-    return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
-  }
-
-  function toObject () {
-    var m = this;
-    return {
-      years: m.year(),
-      months: m.month(),
-      date: m.date(),
-      hours: m.hours(),
-      minutes: m.minutes(),
-      seconds: m.seconds(),
-      milliseconds: m.milliseconds()
-    };
-  }
-
-  function moment_valid__isValid () {
-    return valid__isValid(this);
-  }
-
-  function parsingFlags () {
-    return extend({}, getParsingFlags(this));
-  }
-
-  function invalidAt () {
-    return getParsingFlags(this).overflow;
-  }
-
-  addFormatToken(0, ['gg', 2], 0, function () {
-    return this.weekYear() % 100;
-  });
-
-  addFormatToken(0, ['GG', 2], 0, function () {
-    return this.isoWeekYear() % 100;
-  });
-
-  function addWeekYearFormatToken (token, getter) {
-    addFormatToken(0, [token, token.length], 0, getter);
-  }
-
-  addWeekYearFormatToken('gggg',     'weekYear');
-  addWeekYearFormatToken('ggggg',    'weekYear');
-  addWeekYearFormatToken('GGGG',  'isoWeekYear');
-  addWeekYearFormatToken('GGGGG', 'isoWeekYear');
-
-  // ALIASES
-
-  addUnitAlias('weekYear', 'gg');
-  addUnitAlias('isoWeekYear', 'GG');
-
-  // PARSING
-
-  addRegexToken('G',      matchSigned);
-  addRegexToken('g',      matchSigned);
-  addRegexToken('GG',     match1to2, match2);
-  addRegexToken('gg',     match1to2, match2);
-  addRegexToken('GGGG',   match1to4, match4);
-  addRegexToken('gggg',   match1to4, match4);
-  addRegexToken('GGGGG',  match1to6, match6);
-  addRegexToken('ggggg',  match1to6, match6);
-
-  addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
-    week[token.substr(0, 2)] = toInt(input);
-  });
-
-  addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
-    week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
-  });
-
-  // HELPERS
-
-  function weeksInYear(year, dow, doy) {
-    return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;
-  }
-
-  // MOMENTS
-
-  function getSetWeekYear (input) {
-    var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
-    return input == null ? year : this.add((input - year), 'y');
-  }
-
-  function getSetISOWeekYear (input) {
-    var year = weekOfYear(this, 1, 4).year;
-    return input == null ? year : this.add((input - year), 'y');
-  }
-
-  function getISOWeeksInYear () {
-    return weeksInYear(this.year(), 1, 4);
-  }
-
-  function getWeeksInYear () {
-    var weekInfo = this.localeData()._week;
-    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
-  }
-
-  addFormatToken('Q', 0, 0, 'quarter');
-
-  // ALIASES
-
-  addUnitAlias('quarter', 'Q');
-
-  // PARSING
-
-  addRegexToken('Q', match1);
-  addParseToken('Q', function (input, array) {
-    array[MONTH] = (toInt(input) - 1) * 3;
-  });
-
-  // MOMENTS
-
-  function getSetQuarter (input) {
-    return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
-  }
-
-  addFormatToken('D', ['DD', 2], 'Do', 'date');
-
-  // ALIASES
-
-  addUnitAlias('date', 'D');
-
-  // PARSING
-
-  addRegexToken('D',  match1to2);
-  addRegexToken('DD', match1to2, match2);
-  addRegexToken('Do', function (isStrict, locale) {
-    return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
-  });
-
-  addParseToken(['D', 'DD'], DATE);
-  addParseToken('Do', function (input, array) {
-    array[DATE] = toInt(input.match(match1to2)[0], 10);
-  });
-
-  // MOMENTS
-
-  var getSetDayOfMonth = makeGetSet('Date', true);
-
-  addFormatToken('d', 0, 'do', 'day');
-
-  addFormatToken('dd', 0, 0, function (format) {
-    return this.localeData().weekdaysMin(this, format);
-  });
-
-  addFormatToken('ddd', 0, 0, function (format) {
-    return this.localeData().weekdaysShort(this, format);
-  });
-
-  addFormatToken('dddd', 0, 0, function (format) {
-    return this.localeData().weekdays(this, format);
-  });
-
-  addFormatToken('e', 0, 0, 'weekday');
-  addFormatToken('E', 0, 0, 'isoWeekday');
-
-  // ALIASES
-
-  addUnitAlias('day', 'd');
-  addUnitAlias('weekday', 'e');
-  addUnitAlias('isoWeekday', 'E');
-
-  // PARSING
-
-  addRegexToken('d',    match1to2);
-  addRegexToken('e',    match1to2);
-  addRegexToken('E',    match1to2);
-  addRegexToken('dd',   matchWord);
-  addRegexToken('ddd',  matchWord);
-  addRegexToken('dddd', matchWord);
-
-  addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {
-    var weekday = config._locale.weekdaysParse(input);
-    // if we didn't get a weekday name, mark the date as invalid
-    if (weekday != null) {
-      week.d = weekday;
-    } else {
-      getParsingFlags(config).invalidWeekday = input;
-    }
-  });
-
-  addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
-    week[token] = toInt(input);
-  });
-
-  // HELPERS
-
-  function parseWeekday(input, locale) {
-    if (typeof input !== 'string') {
-      return input;
-    }
-
-    if (!isNaN(input)) {
-      return parseInt(input, 10);
-    }
-
-    input = locale.weekdaysParse(input);
-    if (typeof input === 'number') {
-      return input;
-    }
-
-    return null;
-  }
-
-  // LOCALES
-
-  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
-  function localeWeekdays (m) {
-    return this._weekdays[m.day()];
-  }
-
-  var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
-  function localeWeekdaysShort (m) {
-    return this._weekdaysShort[m.day()];
-  }
-
-  var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
-  function localeWeekdaysMin (m) {
-    return this._weekdaysMin[m.day()];
-  }
-
-  function localeWeekdaysParse (weekdayName) {
-    var i, mom, regex;
-
-    this._weekdaysParse = this._weekdaysParse || [];
-
-    for (i = 0; i < 7; i++) {
-      // make the regex if we don't have it already
-      if (!this._weekdaysParse[i]) {
-        mom = local__createLocal([2000, 1]).day(i);
-        regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
-        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
-      }
-      // test the regex
-      if (this._weekdaysParse[i].test(weekdayName)) {
-        return i;
-      }
-    }
-  }
-
-  // MOMENTS
-
-  function getSetDayOfWeek (input) {
-    var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
-    if (input != null) {
-      input = parseWeekday(input, this.localeData());
-      return this.add(input - day, 'd');
-    } else {
-      return day;
-    }
-  }
-
-  function getSetLocaleDayOfWeek (input) {
-    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
-    return input == null ? weekday : this.add(input - weekday, 'd');
-  }
-
-  function getSetISODayOfWeek (input) {
-    // behaves the same as moment#day except
-    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
-    // as a setter, sunday should belong to the previous week.
-    return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
-  }
-
-  addFormatToken('H', ['HH', 2], 0, 'hour');
-  addFormatToken('h', ['hh', 2], 0, function () {
-    return this.hours() % 12 || 12;
-  });
-
-  function meridiem (token, lowercase) {
-    addFormatToken(token, 0, 0, function () {
-      return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
-    });
-  }
-
-  meridiem('a', true);
-  meridiem('A', false);
-
-  // ALIASES
-
-  addUnitAlias('hour', 'h');
-
-  // PARSING
-
-  function matchMeridiem (isStrict, locale) {
-    return locale._meridiemParse;
-  }
-
-  addRegexToken('a',  matchMeridiem);
-  addRegexToken('A',  matchMeridiem);
-  addRegexToken('H',  match1to2);
-  addRegexToken('h',  match1to2);
-  addRegexToken('HH', match1to2, match2);
-  addRegexToken('hh', match1to2, match2);
-
-  addParseToken(['H', 'HH'], HOUR);
-  addParseToken(['a', 'A'], function (input, array, config) {
-    config._isPm = config._locale.isPM(input);
-    config._meridiem = input;
-  });
-  addParseToken(['h', 'hh'], function (input, array, config) {
-    array[HOUR] = toInt(input);
-    getParsingFlags(config).bigHour = true;
-  });
-
-  // LOCALES
-
-  function localeIsPM (input) {
-    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
-    // Using charAt should be more compatible.
-    return ((input + '').toLowerCase().charAt(0) === 'p');
-  }
-
-  var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
-  function localeMeridiem (hours, minutes, isLower) {
-    if (hours > 11) {
-      return isLower ? 'pm' : 'PM';
-    } else {
-      return isLower ? 'am' : 'AM';
-    }
-  }
-
-
-  // MOMENTS
-
-  // Setting the hour should keep the time, because the user explicitly
-  // specified which hour he wants. So trying to maintain the same hour (in
-  // a new timezone) makes sense. Adding/subtracting hours does not follow
-  // this rule.
-  var getSetHour = makeGetSet('Hours', true);
-
-  addFormatToken('m', ['mm', 2], 0, 'minute');
-
-  // ALIASES
-
-  addUnitAlias('minute', 'm');
-
-  // PARSING
-
-  addRegexToken('m',  match1to2);
-  addRegexToken('mm', match1to2, match2);
-  addParseToken(['m', 'mm'], MINUTE);
-
-  // MOMENTS
-
-  var getSetMinute = makeGetSet('Minutes', false);
-
-  addFormatToken('s', ['ss', 2], 0, 'second');
-
-  // ALIASES
-
-  addUnitAlias('second', 's');
-
-  // PARSING
-
-  addRegexToken('s',  match1to2);
-  addRegexToken('ss', match1to2, match2);
-  addParseToken(['s', 'ss'], SECOND);
-
-  // MOMENTS
-
-  var getSetSecond = makeGetSet('Seconds', false);
-
-  addFormatToken('S', 0, 0, function () {
-    return ~~(this.millisecond() / 100);
-  });
-
-  addFormatToken(0, ['SS', 2], 0, function () {
-    return ~~(this.millisecond() / 10);
-  });
-
-  addFormatToken(0, ['SSS', 3], 0, 'millisecond');
-  addFormatToken(0, ['SSSS', 4], 0, function () {
-    return this.millisecond() * 10;
-  });
-  addFormatToken(0, ['SSSSS', 5], 0, function () {
-    return this.millisecond() * 100;
-  });
-  addFormatToken(0, ['SSSSSS', 6], 0, function () {
-    return this.millisecond() * 1000;
-  });
-  addFormatToken(0, ['SSSSSSS', 7], 0, function () {
-    return this.millisecond() * 10000;
-  });
-  addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
-    return this.millisecond() * 100000;
-  });
-  addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
-    return this.millisecond() * 1000000;
-  });
-
-
-  // ALIASES
-
-  addUnitAlias('millisecond', 'ms');
-
-  // PARSING
-
-  addRegexToken('S',    match1to3, match1);
-  addRegexToken('SS',   match1to3, match2);
-  addRegexToken('SSS',  match1to3, match3);
-
-  var token;
-  for (token = 'SSSS'; token.length <= 9; token += 'S') {
-    addRegexToken(token, matchUnsigned);
-  }
-
-  function parseMs(input, array) {
-    array[MILLISECOND] = toInt(('0.' + input) * 1000);
-  }
-
-  for (token = 'S'; token.length <= 9; token += 'S') {
-    addParseToken(token, parseMs);
-  }
-  // MOMENTS
-
-  var getSetMillisecond = makeGetSet('Milliseconds', false);
-
-  addFormatToken('z',  0, 0, 'zoneAbbr');
-  addFormatToken('zz', 0, 0, 'zoneName');
-
-  // MOMENTS
-
-  function getZoneAbbr () {
-    return this._isUTC ? 'UTC' : '';
-  }
-
-  function getZoneName () {
-    return this._isUTC ? 'Coordinated Universal Time' : '';
-  }
-
-  var momentPrototype__proto = Moment.prototype;
-
-  momentPrototype__proto.add          = add_subtract__add;
-  momentPrototype__proto.calendar     = moment_calendar__calendar;
-  momentPrototype__proto.clone        = clone;
-  momentPrototype__proto.diff         = diff;
-  momentPrototype__proto.endOf        = endOf;
-  momentPrototype__proto.format       = format;
-  momentPrototype__proto.from         = from;
-  momentPrototype__proto.fromNow      = fromNow;
-  momentPrototype__proto.to           = to;
-  momentPrototype__proto.toNow        = toNow;
-  momentPrototype__proto.get          = getSet;
-  momentPrototype__proto.invalidAt    = invalidAt;
-  momentPrototype__proto.isAfter      = isAfter;
-  momentPrototype__proto.isBefore     = isBefore;
-  momentPrototype__proto.isBetween    = isBetween;
-  momentPrototype__proto.isSame       = isSame;
-  momentPrototype__proto.isValid      = moment_valid__isValid;
-  momentPrototype__proto.lang         = lang;
-  momentPrototype__proto.locale       = locale;
-  momentPrototype__proto.localeData   = localeData;
-  momentPrototype__proto.max          = prototypeMax;
-  momentPrototype__proto.min          = prototypeMin;
-  momentPrototype__proto.parsingFlags = parsingFlags;
-  momentPrototype__proto.set          = getSet;
-  momentPrototype__proto.startOf      = startOf;
-  momentPrototype__proto.subtract     = add_subtract__subtract;
-  momentPrototype__proto.toArray      = toArray;
-  momentPrototype__proto.toObject     = toObject;
-  momentPrototype__proto.toDate       = toDate;
-  momentPrototype__proto.toISOString  = moment_format__toISOString;
-  momentPrototype__proto.toJSON       = moment_format__toISOString;
-  momentPrototype__proto.toString     = toString;
-  momentPrototype__proto.unix         = unix;
-  momentPrototype__proto.valueOf      = to_type__valueOf;
-
-  // Year
-  momentPrototype__proto.year       = getSetYear;
-  momentPrototype__proto.isLeapYear = getIsLeapYear;
-
-  // Week Year
-  momentPrototype__proto.weekYear    = getSetWeekYear;
-  momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
-
-  // Quarter
-  momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
-
-  // Month
-  momentPrototype__proto.month       = getSetMonth;
-  momentPrototype__proto.daysInMonth = getDaysInMonth;
-
-  // Week
-  momentPrototype__proto.week           = momentPrototype__proto.weeks        = getSetWeek;
-  momentPrototype__proto.isoWeek        = momentPrototype__proto.isoWeeks     = getSetISOWeek;
-  momentPrototype__proto.weeksInYear    = getWeeksInYear;
-  momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
-
-  // Day
-  momentPrototype__proto.date       = getSetDayOfMonth;
-  momentPrototype__proto.day        = momentPrototype__proto.days             = getSetDayOfWeek;
-  momentPrototype__proto.weekday    = getSetLocaleDayOfWeek;
-  momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
-  momentPrototype__proto.dayOfYear  = getSetDayOfYear;
-
-  // Hour
-  momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
-
-  // Minute
-  momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
-
-  // Second
-  momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
-
-  // Millisecond
-  momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
-
-  // Offset
-  momentPrototype__proto.utcOffset            = getSetOffset;
-  momentPrototype__proto.utc                  = setOffsetToUTC;
-  momentPrototype__proto.local                = setOffsetToLocal;
-  momentPrototype__proto.parseZone            = setOffsetToParsedOffset;
-  momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
-  momentPrototype__proto.isDST                = isDaylightSavingTime;
-  momentPrototype__proto.isDSTShifted         = isDaylightSavingTimeShifted;
-  momentPrototype__proto.isLocal              = isLocal;
-  momentPrototype__proto.isUtcOffset          = isUtcOffset;
-  momentPrototype__proto.isUtc                = isUtc;
-  momentPrototype__proto.isUTC                = isUtc;
-
-  // Timezone
-  momentPrototype__proto.zoneAbbr = getZoneAbbr;
-  momentPrototype__proto.zoneName = getZoneName;
-
-  // Deprecations
-  momentPrototype__proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
-  momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
-  momentPrototype__proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);
-  momentPrototype__proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
-
-  var momentPrototype = momentPrototype__proto;
-
-  function moment__createUnix (input) {
-    return local__createLocal(input * 1000);
-  }
-
-  function moment__createInZone () {
-    return local__createLocal.apply(null, arguments).parseZone();
-  }
-
-  var defaultCalendar = {
-    sameDay : '[Today at] LT',
-    nextDay : '[Tomorrow at] LT',
-    nextWeek : 'dddd [at] LT',
-    lastDay : '[Yesterday at] LT',
-    lastWeek : '[Last] dddd [at] LT',
-    sameElse : 'L'
-  };
-
-  function locale_calendar__calendar (key, mom, now) {
-    var output = this._calendar[key];
-    return typeof output === 'function' ? output.call(mom, now) : output;
-  }
-
-  var defaultLongDateFormat = {
-    LTS  : 'h:mm:ss A',
-    LT   : 'h:mm A',
-    L    : 'MM/DD/YYYY',
-    LL   : 'MMMM D, YYYY',
-    LLL  : 'MMMM D, YYYY h:mm A',
-    LLLL : 'dddd, MMMM D, YYYY h:mm A'
-  };
-
-  function longDateFormat (key) {
-    var format = this._longDateFormat[key],
-      formatUpper = this._longDateFormat[key.toUpperCase()];
-
-    if (format || !formatUpper) {
-      return format;
-    }
-
-    this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
-      return val.slice(1);
-    });
-
-    return this._longDateFormat[key];
-  }
-
-  var defaultInvalidDate = 'Invalid date';
-
-  function invalidDate () {
-    return this._invalidDate;
-  }
-
-  var defaultOrdinal = '%d';
-  var defaultOrdinalParse = /\d{1,2}/;
-
-  function ordinal (number) {
-    return this._ordinal.replace('%d', number);
-  }
-
-  function preParsePostFormat (string) {
-    return string;
-  }
-
-  var defaultRelativeTime = {
-    future : 'in %s',
-    past   : '%s ago',
-    s  : 'a few seconds',
-    m  : 'a minute',
-    mm : '%d minutes',
-    h  : 'an hour',
-    hh : '%d hours',
-    d  : 'a day',
-    dd : '%d days',
-    M  : 'a month',
-    MM : '%d months',
-    y  : 'a year',
-    yy : '%d years'
-  };
-
-  function relative__relativeTime (number, withoutSuffix, string, isFuture) {
-    var output = this._relativeTime[string];
-    return (typeof output === 'function') ?
-      output(number, withoutSuffix, string, isFuture) :
-      output.replace(/%d/i, number);
-  }
-
-  function pastFuture (diff, output) {
-    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
-    return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
-  }
-
-  function locale_set__set (config) {
-    var prop, i;
-    for (i in config) {
-      prop = config[i];
-      if (typeof prop === 'function') {
-        this[i] = prop;
-      } else {
-        this['_' + i] = prop;
-      }
-    }
-    // Lenient ordinal parsing accepts just a number in addition to
-    // number + (possibly) stuff coming from _ordinalParseLenient.
-    this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
-  }
-
-  var prototype__proto = Locale.prototype;
-
-  prototype__proto._calendar       = defaultCalendar;
-  prototype__proto.calendar        = locale_calendar__calendar;
-  prototype__proto._longDateFormat = defaultLongDateFormat;
-  prototype__proto.longDateFormat  = longDateFormat;
-  prototype__proto._invalidDate    = defaultInvalidDate;
-  prototype__proto.invalidDate     = invalidDate;
-  prototype__proto._ordinal        = defaultOrdinal;
-  prototype__proto.ordinal         = ordinal;
-  prototype__proto._ordinalParse   = defaultOrdinalParse;
-  prototype__proto.preparse        = preParsePostFormat;
-  prototype__proto.postformat      = preParsePostFormat;
-  prototype__proto._relativeTime   = defaultRelativeTime;
-  prototype__proto.relativeTime    = relative__relativeTime;
-  prototype__proto.pastFuture      = pastFuture;
-  prototype__proto.set             = locale_set__set;
-
-  // Month
-  prototype__proto.months       =        localeMonths;
-  prototype__proto._months      = defaultLocaleMonths;
-  prototype__proto.monthsShort  =        localeMonthsShort;
-  prototype__proto._monthsShort = defaultLocaleMonthsShort;
-  prototype__proto.monthsParse  =        localeMonthsParse;
-
-  // Week
-  prototype__proto.week = localeWeek;
-  prototype__proto._week = defaultLocaleWeek;
-  prototype__proto.firstDayOfYear = localeFirstDayOfYear;
-  prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
-
-  // Day of Week
-  prototype__proto.weekdays       =        localeWeekdays;
-  prototype__proto._weekdays      = defaultLocaleWeekdays;
-  prototype__proto.weekdaysMin    =        localeWeekdaysMin;
-  prototype__proto._weekdaysMin   = defaultLocaleWeekdaysMin;
-  prototype__proto.weekdaysShort  =        localeWeekdaysShort;
-  prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
-  prototype__proto.weekdaysParse  =        localeWeekdaysParse;
-
-  // Hours
-  prototype__proto.isPM = localeIsPM;
-  prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
-  prototype__proto.meridiem = localeMeridiem;
-
-  function lists__get (format, index, field, setter) {
-    var locale = locale_locales__getLocale();
-    var utc = create_utc__createUTC().set(setter, index);
-    return locale[field](utc, format);
-  }
-
-  function list (format, index, field, count, setter) {
-    if (typeof format === 'number') {
-      index = format;
-      format = undefined;
-    }
-
-    format = format || '';
-
-    if (index != null) {
-      return lists__get(format, index, field, setter);
-    }
-
-    var i;
-    var out = [];
-    for (i = 0; i < count; i++) {
-      out[i] = lists__get(format, i, field, setter);
-    }
-    return out;
-  }
-
-  function lists__listMonths (format, index) {
-    return list(format, index, 'months', 12, 'month');
-  }
-
-  function lists__listMonthsShort (format, index) {
-    return list(format, index, 'monthsShort', 12, 'month');
-  }
-
-  function lists__listWeekdays (format, index) {
-    return list(format, index, 'weekdays', 7, 'day');
-  }
-
-  function lists__listWeekdaysShort (format, index) {
-    return list(format, index, 'weekdaysShort', 7, 'day');
-  }
-
-  function lists__listWeekdaysMin (format, index) {
-    return list(format, index, 'weekdaysMin', 7, 'day');
-  }
-
-  locale_locales__getSetGlobalLocale('en', {
-    ordinalParse: /\d{1,2}(th|st|nd|rd)/,
-    ordinal : function (number) {
-      var b = number % 10,
-        output = (toInt(number % 100 / 10) === 1) ? 'th' :
-          (b === 1) ? 'st' :
-            (b === 2) ? 'nd' :
-              (b === 3) ? 'rd' : 'th';
-      return number + output;
-    }
-  });
-
-  // Side effect imports
-  utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
-  utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
-
-  var mathAbs = Math.abs;
-
-  function duration_abs__abs () {
-    var data           = this._data;
-
-    this._milliseconds = mathAbs(this._milliseconds);
-    this._days         = mathAbs(this._days);
-    this._months       = mathAbs(this._months);
-
-    data.milliseconds  = mathAbs(data.milliseconds);
-    data.seconds       = mathAbs(data.seconds);
-    data.minutes       = mathAbs(data.minutes);
-    data.hours         = mathAbs(data.hours);
-    data.months        = mathAbs(data.months);
-    data.years         = mathAbs(data.years);
-
-    return this;
-  }
-
-  function duration_add_subtract__addSubtract (duration, input, value, direction) {
-    var other = create__createDuration(input, value);
-
-    duration._milliseconds += direction * other._milliseconds;
-    duration._days         += direction * other._days;
-    duration._months       += direction * other._months;
-
-    return duration._bubble();
-  }
-
-  // supports only 2.0-style add(1, 's') or add(duration)
-  function duration_add_subtract__add (input, value) {
-    return duration_add_subtract__addSubtract(this, input, value, 1);
-  }
-
-  // supports only 2.0-style subtract(1, 's') or subtract(duration)
-  function duration_add_subtract__subtract (input, value) {
-    return duration_add_subtract__addSubtract(this, input, value, -1);
-  }
-
-  function absCeil (number) {
-    if (number < 0) {
-      return Math.floor(number);
-    } else {
-      return Math.ceil(number);
-    }
-  }
-
-  function bubble () {
-    var milliseconds = this._milliseconds;
-    var days         = this._days;
-    var months       = this._months;
-    var data         = this._data;
-    var seconds, minutes, hours, years, monthsFromDays;
-
-    // if we have a mix of positive and negative values, bubble down first
-    // check: https://github.com/moment/moment/issues/2166
-    if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
-      (milliseconds <= 0 && days <= 0 && months <= 0))) {
-      milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
-      days = 0;
-      months = 0;
-    }
-
-    // The following code bubbles up values, see the tests for
-    // examples of what that means.
-    data.milliseconds = milliseconds % 1000;
-
-    seconds           = absFloor(milliseconds / 1000);
-    data.seconds      = seconds % 60;
-
-    minutes           = absFloor(seconds / 60);
-    data.minutes      = minutes % 60;
-
-    hours             = absFloor(minutes / 60);
-    data.hours        = hours % 24;
-
-    days += absFloor(hours / 24);
-
-    // convert days to months
-    monthsFromDays = absFloor(daysToMonths(days));
-    months += monthsFromDays;
-    days -= absCeil(monthsToDays(monthsFromDays));
-
-    // 12 months -> 1 year
-    years = absFloor(months / 12);
-    months %= 12;
-
-    data.days   = days;
-    data.months = months;
-    data.years  = years;
-
-    return this;
-  }
-
-  function daysToMonths (days) {
-    // 400 years have 146097 days (taking into account leap year rules)
-    // 400 years have 12 months === 4800
-    return days * 4800 / 146097;
-  }
-
-  function monthsToDays (months) {
-    // the reverse of daysToMonths
-    return months * 146097 / 4800;
-  }
-
-  function as (units) {
-    var days;
-    var months;
-    var milliseconds = this._milliseconds;
-
-    units = normalizeUnits(units);
-
-    if (units === 'month' || units === 'year') {
-      days   = this._days   + milliseconds / 864e5;
-      months = this._months + daysToMonths(days);
-      return units === 'month' ? months : months / 12;
-    } else {
-      // handle milliseconds separately because of floating point math errors (issue #1867)
-      days = this._days + Math.round(monthsToDays(this._months));
-      switch (units) {
-        case 'week'   : return days / 7     + milliseconds / 6048e5;
-        case 'day'    : return days         + milliseconds / 864e5;
-        case 'hour'   : return days * 24    + milliseconds / 36e5;
-        case 'minute' : return days * 1440  + milliseconds / 6e4;
-        case 'second' : return days * 86400 + milliseconds / 1000;
-        // Math.floor prevents floating point math errors here
-        case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
-        default: throw new Error('Unknown unit ' + units);
-      }
-    }
-  }
-
-  // TODO: Use this.as('ms')?
-  function duration_as__valueOf () {
-    return (
-      this._milliseconds +
-      this._days * 864e5 +
-      (this._months % 12) * 2592e6 +
-      toInt(this._months / 12) * 31536e6
-    );
-  }
-
-  function makeAs (alias) {
-    return function () {
-      return this.as(alias);
-    };
-  }
-
-  var asMilliseconds = makeAs('ms');
-  var asSeconds      = makeAs('s');
-  var asMinutes      = makeAs('m');
-  var asHours        = makeAs('h');
-  var asDays         = makeAs('d');
-  var asWeeks        = makeAs('w');
-  var asMonths       = makeAs('M');
-  var asYears        = makeAs('y');
-
-  function duration_get__get (units) {
-    units = normalizeUnits(units);
-    return this[units + 's']();
-  }
-
-  function makeGetter(name) {
-    return function () {
-      return this._data[name];
-    };
-  }
-
-  var milliseconds = makeGetter('milliseconds');
-  var seconds      = makeGetter('se

<TRUNCATED>

[3/5] ambari git commit: Ambari-16017: Update Moment.js to latest stable version 2.13.0 (Sangeeta Ravindran via dili)

Posted by di...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2d4aff/ambari-web/vendor/scripts/moment.min.js
----------------------------------------------------------------------
diff --git a/ambari-web/vendor/scripts/moment.min.js b/ambari-web/vendor/scripts/moment.min.js
new file mode 100644
index 0000000..d301ddb
--- /dev/null
+++ b/ambari-web/vendor/scripts/moment.min.js
@@ -0,0 +1,7 @@
+//! moment.js
+//! version : 2.13.0
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return fd.apply(null,arguments)}function b(a){fd=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return Ja(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function j(a){return null==a._pf&&(a._pf=i()
 ),a._pf}function k(a){if(null==a._isValid){var b=j(a),c=gd.call(b.parsedDateParts,function(a){return null!=a});a._isValid=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c),a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(NaN);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a){return void 0===a}function n(a,b){var c,d,e;if(m(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),m(b._i)||(a._i=b._i),m(b._f)||(a._f=b._f),m(b._l)||(a._l=b._l),m(b._strict)||(a._strict=b._strict),m(b._tzm)||(a._tzm=b._tzm),m(b._isUTC)||(a._isUTC=b._isUTC),m(b._offset)||(a._offset=b._offset),m(b._pf)||(a._pf=j(b)),m(b._locale)||(a._locale=b._locale),hd.length>0)for(c in hd)d=hd[c],e=b[d],m(e)||(a[d]=e);return a}function o(b){n(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN
 ),id===!1&&(id=!0,a.updateOffset(this),id=!1)}function p(a){return a instanceof o||null!=a&&null!=a._isAMomentObject}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=q(b)),c}function s(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&r(a[d])!==r(b[d]))&&g++;return g+f}function t(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function u(b,c){var d=!0;return g(function(){return null!=a.deprecationHandler&&a.deprecationHandler(null,b),d&&(t(b+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),d=!1),c.apply(this,arguments)},c)}function v(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),jd[b]||(t(c),jd[b]=!0)}function w(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function x(a){return"[object Object]"
 ===Object.prototype.toString.call(a)}function y(a){var b,c;for(c in a)b=a[c],w(b)?this[c]=b:this["_"+c]=b;this._config=a,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function z(a,b){var c,d=g({},a);for(c in b)f(b,c)&&(x(a[c])&&x(b[c])?(d[c]={},g(d[c],a[c]),g(d[c],b[c])):null!=b[c]?d[c]=b[c]:delete d[c]);return d}function A(a){null!=a&&this.set(a)}function B(a){return a?a.toLowerCase().replace("_","-"):a}function C(a){for(var b,c,d,e,f=0;f<a.length;){for(e=B(a[f]).split("-"),b=e.length,c=B(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=D(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&s(e,c,!0)>=b-1)break;b--}f++}return null}function D(a){var b=null;if(!nd[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=ld._abbr,require("./locale/"+a),E(b)}catch(c){}return nd[a]}function E(a,b){var c;return a&&(c=m(b)?H(a):F(a,b),c&&(ld=c)),ld._abbr}function F(a,b){return null!==b?(b.abbr=a,null!=nd[a]?(v("defineLocaleOverride","use moment.updateLoca
 le(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),b=z(nd[a]._config,b)):null!=b.parentLocale&&(null!=nd[b.parentLocale]?b=z(nd[b.parentLocale]._config,b):v("parentLocaleUndefined","specified parentLocale is not defined yet")),nd[a]=new A(b),E(a),nd[a]):(delete nd[a],null)}function G(a,b){if(null!=b){var c;null!=nd[a]&&(b=z(nd[a]._config,b)),c=new A(b),c.parentLocale=nd[a],nd[a]=c,E(a)}else null!=nd[a]&&(null!=nd[a].parentLocale?nd[a]=nd[a].parentLocale:null!=nd[a]&&delete nd[a]);return nd[a]}function H(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return ld;if(!c(a)){if(b=D(a))return b;a=[a]}return C(a)}function I(){return kd(nd)}function J(a,b){var c=a.toLowerCase();od[c]=od[c+"s"]=od[b]=a}function K(a){return"string"==typeof a?od[a]||od[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)f(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(b,c){return function(d)
 {return null!=d?(O(this,b,d),a.updateOffset(this,c),this):N(this,b)}}function N(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function O(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function P(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=K(a),w(this[a]))return this[a](b);return this}function Q(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function R(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(sd[a]=e),b&&(sd[b[0]]=function(){return Q(e.apply(this,arguments),b[1],b[2])}),c&&(sd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function S(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function T(a){var b,c,d=a.match(pd);for(b=0,c=d.length;c>b;b++)sd[d[b]]?d[b]=sd[d[b]]:d[b]=S(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];
 return f}}function U(a,b){return a.isValid()?(b=V(b,a.localeData()),rd[b]=rd[b]||T(b),rd[b](a)):a.localeData().invalidDate()}function V(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(qd.lastIndex=0;d>=0&&qd.test(a);)a=a.replace(qd,c),qd.lastIndex=0,d-=1;return a}function W(a,b,c){Kd[a]=w(b)?b:function(a,d){return a&&c?c:b}}function X(a,b){return f(Kd,a)?Kd[a](b._strict,b._locale):new RegExp(Y(a))}function Y(a){return Z(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function Z(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=r(a)}),c=0;c<a.length;c++)Ld[a[c]]=d}function _(a,b){$(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function aa(a,b,c){null!=b&&f(Ld,a)&&Ld[a](b,c._a,c,a)}function ba(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function ca(a,b){return c(this._months)?this._months[a.month()]:t
 his._months[Vd.test(b)?"format":"standalone"][a.month()]}function da(a,b){return c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[Vd.test(b)?"format":"standalone"][a.month()]}function ea(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=h([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:null):(e=md.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:(e=md.call(this._longMonthsParse,g),-1!==e?e:null)):(e=md.call(this._longMonthsParse,g),-1!==e?e:(e=md.call(this._shortMonthsParse,g),-1!==e?e:null))}function fa(a,b,c){var d,e,f;if(this._monthsParseExact)return ea.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMon
 thsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ga(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=r(b);else if(b=a.localeData().monthsParse(b),"number"!=typeof b)return a;return c=Math.min(a.date(),ba(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ha(b){return null!=b?(ga(this,b),a.updateOffset(this,!0),this):N(this,"Month")}function ia(){return ba(this.year(),this.month())}function ja(a){return this._monthsParseExact?(f(this,"_months
 Regex")||la.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex}function ka(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex}function la(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=h([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=Z(d[b]),e[b]=Z(e[b]),f[b]=Z(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function ma(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[Nd]<0||c[Nd]>11?Nd:c[Od]<1||c[Od]>ba(c[Md],
 c[Nd])?Od:c[Pd]<0||c[Pd]>24||24===c[Pd]&&(0!==c[Qd]||0!==c[Rd]||0!==c[Sd])?Pd:c[Qd]<0||c[Qd]>59?Qd:c[Rd]<0||c[Rd]>59?Rd:c[Sd]<0||c[Sd]>999?Sd:-1,j(a)._overflowDayOfYear&&(Md>b||b>Od)&&(b=Od),j(a)._overflowWeeks&&-1===b&&(b=Td),j(a)._overflowWeekday&&-1===b&&(b=Ud),j(a).overflow=b),a}function na(a){var b,c,d,e,f,g,h=a._i,i=$d.exec(h)||_d.exec(h);if(i){for(j(a).iso=!0,b=0,c=be.length;c>b;b++)if(be[b][1].exec(i[1])){e=be[b][0],d=be[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=ce.length;c>b;b++)if(ce[b][1].exec(i[3])){f=(i[2]||" ")+ce[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!ae.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),Ca(a)}else a._isValid=!1}function oa(b){var c=de.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(na(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function pa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>
 =0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function qa(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ra(a){return sa(a)?366:365}function sa(a){return a%4===0&&a%100!==0||a%400===0}function ta(){return sa(this.year())}function ua(a,b,c){var d=7+b-c,e=(7+qa(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=ra(f)+j):j>ra(a)?(f=a+1,g=j-ra(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(ra(a)-d+e)/7}function ya(a,b,c){return null!=a?a:null!=b?b:c}function za(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),
 c.getMonth(),c.getDate()]}function Aa(a){var b,c,d,e,f=[];if(!a._d){for(d=za(a),a._w&&null==a._a[Od]&&null==a._a[Nd]&&Ba(a),a._dayOfYear&&(e=ya(a._a[Md],d[Md]),a._dayOfYear>ra(e)&&(j(a)._overflowDayOfYear=!0),c=qa(e,0,a._dayOfYear),a._a[Nd]=c.getUTCMonth(),a._a[Od]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[Pd]&&0===a._a[Qd]&&0===a._a[Rd]&&0===a._a[Sd]&&(a._nextDay=!0,a._a[Pd]=0),a._d=(a._useUTC?qa:pa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Pd]=24)}}function Ba(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ya(b.GG,a._a[Md],wa(Ka(),1,4).year),d=ya(b.W,1),e=ya(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ya(b.gg,a._a[Md],wa(Ka(),f,g).year),d=ya(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>xa(c,f,g)?j(a)._overflowWeeks=!0:null!=i?j(a)._ov
 erflowWeekday=!0:(h=va(c,d,e,f,g),a._a[Md]=h.year,a._dayOfYear=h.dayOfYear)}function Ca(b){if(b._f===a.ISO_8601)return void na(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=V(b._f,b._locale).match(pd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(X(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),sd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),aa(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[Pd]<=12&&b._a[Pd]>0&&(j(b).bigHour=void 0),j(b).parsedDateParts=b._a.slice(0),j(b).meridiem=b._meridiem,b._a[Pd]=Da(b._locale,b._a[Pd],b._meridiem),Aa(b),ma(b)}function Da(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function Ea(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=
 0;e<a._f.length;e++)f=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],Ca(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function Fa(a){if(!a._d){var b=L(a._i);a._a=e([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),Aa(a)}}function Ga(a){var b=new o(ma(Ha(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Ha(a){var b=a._i,e=a._f;return a._locale=a._locale||H(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),p(b)?new o(ma(b)):(c(e)?Ea(a):e?Ca(a):d(b)?a._d=b:Ia(a),k(a)||(a._d=null),a))}function Ia(b){var f=b._i;void 0===f?b._d=new Date(a.now()):d(f)?b._d=new Date(f.valueOf()):"string"==typeof f?oa(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),Aa(b)):"object"==typeof f?Fa(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ja(a,b,c,d,e
 ){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,Ga(f)}function Ka(a,b,c,d){return Ja(a,b,c,d,!1)}function La(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Ka();for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function Ma(){var a=[].slice.call(arguments,0);return La("isBefore",a)}function Na(){var a=[].slice.call(arguments,0);return La("isAfter",a)}function Oa(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=H(),this._bubble()}function Pa(a){return a instanceof Oa}function Qa(a,b){R(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+Q(~~(a/60),2)+b+Q(~~a%60,2)})}function Ra(a,b){var c=(b||"").match(a)||[],d=c[c.length-1]||[],e=(d+"").m
 atch(ie)||["-",0,0],f=+(60*e[1])+r(e[2]);return"+"===e[0]?f:-f}function Sa(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(p(b)||d(b)?b.valueOf():Ka(b).valueOf())-e.valueOf(),e._d.setTime(e._d.valueOf()+f),a.updateOffset(e,!1),e):Ka(b).local()}function Ta(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Ua(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?("string"==typeof b?b=Ra(Hd,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ta(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?jb(this,db(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ta(this):null!=b?this:NaN}function Va(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Wa(a){return this.utcOffset(0,a)}function Xa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ta(this),"m")),this}function Ya(
 ){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ra(Gd,this._i)),this}function Za(a){return this.isValid()?(a=a?Ka(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function $a(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function _a(){if(!m(this._isDSTShifted))return this._isDSTShifted;var a={};if(n(a,this),a=Ha(a),a._a){var b=a._isUTC?h(a._a):Ka(a._a);this._isDSTShifted=this.isValid()&&s(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ab(){return this.isValid()?!this._isUTC:!1}function bb(){return this.isValid()?this._isUTC:!1}function cb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function db(a,b){var c,d,e,g=a,h=null;return Pa(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=je.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:r(h[Od])*c,h:r(h[Pd])*c,m:r(h[Qd])*c,s:r(h[Rd])*c,ms:r(h[Sd])*c})
 :(h=ke.exec(a))?(c="-"===h[1]?-1:1,g={y:eb(h[2],c),M:eb(h[3],c),w:eb(h[4],c),d:eb(h[5],c),h:eb(h[6],c),m:eb(h[7],c),s:eb(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=gb(Ka(g.from),Ka(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Oa(g),Pa(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function eb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function fb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function gb(a,b){var c;return a.isValid()&&b.isValid()?(b=Sa(b,a),a.isBefore(b)?c=fb(a,b):(c=fb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function hb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}function ib(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(v(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(num
 ber, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=db(c,d),jb(this,e,a),this}}function jb(b,c,d,e){var f=c._milliseconds,g=hb(c._days),h=hb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&O(b,"Date",N(b,"Date")+g*d),h&&ga(b,N(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function kb(a,b){var c=a||Ka(),d=Sa(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse",g=b&&(w(b[f])?b[f]():b[f]);return this.format(g||this.localeData().calendar(f,this,Ka(c)))}function lb(){return new o(this)}function mb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function nb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):
 !1}function ob(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function pb(a,b){var c,d=p(a)?a:Ka(a);return this.isValid()&&d.isValid()?(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function qb(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function rb(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function sb(a,b,c){var d,e,f,g;return this.isValid()?(d=Sa(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=tb(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:q(g)):NaN):NaN}function tb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months
 "),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function ub(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function vb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?w(Date.prototype.toISOString)?this.toDate().toISOString():U(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):U(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function wb(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=U(this,b);return this.localeData().postformat(c)}function xb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function yb(a){return this.from(Ka(),a)}function zb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function Ab(a){return this.to(Ka(),a)}function Bb(a){var b;return void 0===a?this._locale._abbr:(b=H(a),null!=b&&(this._locale=b),thi
 s)}function Cb(){return this._locale}function Db(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function Eb(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function Fb(){return this._d.valueOf()-6e4*(this._offset||0)}function Gb(){return Math.floor(this.valueOf()/1e3)}function Hb(){return this._offset?new Date(this.valueOf()):this._d}function Ib(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function Jb(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a
 .milliseconds()}}function Kb(){return this.isValid()?this.toISOString():null}function Lb(){return k(this)}function Mb(){return g({},j(this))}function Nb(){return j(this).overflow}function Ob(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Pb(a,b){R(0,[a,a.length],0,b)}function Qb(a){return Ub.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Rb(a){return Ub.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Sb(){return xa(this.year(),1,4)}function Tb(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ub(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Vb.call(this,a,b,c,d,e))}function Vb(a,b,c,d,e){var f=va(a,b,c,d,e),g=qa(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Wb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1
 )+this.month()%3)}function Xb(a){return wa(a,this._week.dow,this._week.doy).week}function Yb(){return this._week.dow}function Zb(){return this._week.doy}function $b(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function _b(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function ac(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function bc(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]}function cc(a){return this._weekdaysShort[a.day()]}function dc(a){return this._weekdaysMin[a.day()]}function ec(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=h([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toL
 ocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function fc(a,b,c){var d,e,f;if(this._weekdaysParseExact)return ec.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=h([2e3,1]).day(d),c&&!this._fullWeekdaysPar
 se[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function gc(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=ac(a,this.localeData()),this.add(a-b,"d")):b}function hc(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d"
 )}function ic(a){return this.isValid()?null==a?this.day()||7:this.day(this.day()%7?a:a-7):null!=a?this:NaN}function jc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex}function kc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function lc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function mc(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],i=[],j=[],k=[];for(b=0;7>b;b++)c=h([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),i.pus
 h(e),j.push(f),k.push(d),k.push(e),k.push(f);for(g.sort(a),i.sort(a),j.sort(a),k.sort(a),b=0;7>b;b++)i[b]=Z(i[b]),j[b]=Z(j[b]),k[b]=Z(k[b]);this._weekdaysRegex=new RegExp("^("+k.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function nc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function oc(){return this.hours()%12||12}function pc(){return this.hours()||24}function qc(a,b){R(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function rc(a,b){return b._meridiemParse}function sc(a){return"p"===(a+"").toLowerCase().charAt(0)}function tc(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function uc(a,b){b[Sd]=r(1e3*("0."+a))}funct
 ion vc(){return this._isUTC?"UTC":""}function wc(){return this._isUTC?"Coordinated Universal Time":""}function xc(a){return Ka(1e3*a)}function yc(){return Ka.apply(null,arguments).parseZone()}function zc(a,b,c){var d=this._calendar[a];return w(d)?d.call(b,c):d}function Ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function Bc(){return this._invalidDate}function Cc(a){return this._ordinal.replace("%d",a)}function Dc(a){return a}function Ec(a,b,c,d){var e=this._relativeTime[c];return w(e)?e(a,b,c,d):e.replace(/%d/i,a)}function Fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return w(c)?c(b):c.replace(/%s/i,b)}function Gc(a,b,c,d){var e=H(),f=h().set(d,b);return e[c](f,a)}function Hc(a,b,c){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return Gc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Gc(a,d,c,"month");return e
 }function Ic(a,b,c,d){"boolean"==typeof a?("number"==typeof b&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,"number"==typeof b&&(c=b,b=void 0),b=b||"");var e=H(),f=a?e._week.dow:0;if(null!=c)return Gc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;7>g;g++)h[g]=Gc(b,(g+f)%7,d,"day");return h}function Jc(a,b){return Hc(a,b,"months")}function Kc(a,b){return Hc(a,b,"monthsShort")}function Lc(a,b,c){return Ic(a,b,c,"weekdays")}function Mc(a,b,c){return Ic(a,b,c,"weekdaysShort")}function Nc(a,b,c){return Ic(a,b,c,"weekdaysMin")}function Oc(){var a=this._data;return this._milliseconds=Le(this._milliseconds),this._days=Le(this._days),this._months=Le(this._months),a.milliseconds=Le(a.milliseconds),a.seconds=Le(a.seconds),a.minutes=Le(a.minutes),a.hours=Le(a.hours),a.months=Le(a.months),a.years=Le(a.years),this}function Pc(a,b,c,d){var e=db(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Qc(a,b){return Pc(this,a,b,1)}function Rc(a,b){return Pc(thi
 s,a,b,-1)}function Sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Sc(Vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=q(f/1e3),i.seconds=a%60,b=q(a/60),i.minutes=b%60,c=q(b/60),i.hours=c%24,g+=q(c/24),e=q(Uc(g)),h+=e,g-=Sc(Vc(e)),d=q(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function Uc(a){return 4800*a/146097}function Vc(a){return 146097*a/4800}function Wc(a){var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+Uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(Vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function Xc(){return this._milliseconds+864e5*this._days+this._month
 s%12*2592e6+31536e6*r(this._months/12)}function Yc(a){return function(){return this.as(a)}}function Zc(a){
+return a=K(a),this[a+"s"]()}function $c(a){return function(){return this._data[a]}}function _c(){return q(this.days()/7)}function ad(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function bd(a,b,c){var d=db(a).abs(),e=_e(d.as("s")),f=_e(d.as("m")),g=_e(d.as("h")),h=_e(d.as("d")),i=_e(d.as("M")),j=_e(d.as("y")),k=e<af.s&&["s",e]||1>=f&&["m"]||f<af.m&&["mm",f]||1>=g&&["h"]||g<af.h&&["hh",g]||1>=h&&["d"]||h<af.d&&["dd",h]||1>=i&&["M"]||i<af.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,ad.apply(null,k)}function cd(a,b){return void 0===af[a]?!1:void 0===b?af[a]:(af[a]=b,!0)}function dd(a){var b=this.localeData(),c=bd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function ed(){var a,b,c,d=bf(this._milliseconds)/1e3,e=bf(this._days),f=bf(this._months);a=q(d/60),b=q(a/60),d%=60,a%=60,c=q(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+
 (l?l+"S":""):"P0D"}var fd,gd;gd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var hd=a.momentProperties=[],id=!1,jd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var kd;kd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)f(a,b)&&c.push(b);return c};var ld,md,nd={},od={},pd=/(\[[^\[]*\])|(\\)?([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,qd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,rd={},sd={},td=/\d/,ud=/\d\d/,vd=/\d{3}/,wd=/\d{4}/,xd=/[+-]?\d{6}/,yd=/\d\d?/,zd=/\d\d\d\d?/,Ad=/\d\d\d\d\d\d?/,Bd=/\d{1,3}/,Cd=/\d{1,4}/,Dd=/[+-]?\d{1,6}/,Ed=/\d+/,Fd=/[+-]?\d+/,Gd=/Z|[+-]\d\d:?\d\d/gi,Hd=/Z|[+-]\d\d(?::?\d\d)?/gi,Id=/[+-]?\d+(\.\d{1,3})?/,Jd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u06
 00-\u06FF]+){1,2}/i,Kd={},Ld={},Md=0,Nd=1,Od=2,Pd=3,Qd=4,Rd=5,Sd=6,Td=7,Ud=8;md=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1},R("M",["MM",2],"Mo",function(){return this.month()+1}),R("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),R("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),W("M",yd),W("MM",yd,ud),W("MMM",function(a,b){return b.monthsShortRegex(a)}),W("MMMM",function(a,b){return b.monthsRegex(a)}),$(["M","MM"],function(a,b){b[Nd]=r(a)-1}),$(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[Nd]=e:j(c).invalidMonth=a});var Vd=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Wd="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Xd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Yd=Jd,Zd=Jd,$d=/^\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)?)?/,_d=/^\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)?)?/,ae=/Z|[+-]\d\d(?::?\d\d)?/,be=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ce=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],de=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=u("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. 
 Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),R("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),R(0,["YY",2],0,function(){return this.year()%100}),R(0,["YYYY",4],0,"year"),R(0,["YYYYY",5],0,"year"),R(0,["YYYYYY",6,!0],0,"year"),J("year","y"),W("Y",Fd),W("YY",yd,ud),W("YYYY",Cd,wd),W("YYYYY",Dd,xd),W("YYYYYY",Dd,xd),$(["YYYYY","YYYYYY"],Md),$("YYYY",function(b,c){c[Md]=2===b.length?a.parseTwoDigitYear(b):r(b)}),$("YY",function(b,c){c[Md]=a.parseTwoDigitYear(b)}),$("Y",function(a,b){b[Md]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return r(a)+(r(a)>68?1900:2e3)};var ee=M("FullYear",!0);a.ISO_8601=function(){};var fe=u("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:l()}),ge=u("moment().max is deprecated, use moment.min instead. https://g
 ithub.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:l()}),he=function(){return Date.now?Date.now():+new Date};Qa("Z",":"),Qa("ZZ",""),W("Z",Hd),W("ZZ",Hd),$(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ra(Hd,a)});var ie=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var je=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,ke=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;db.fn=Oa.prototype;var le=ib(1,"add"),me=ib(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ne=u("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});R(0,["gg",2],0,function(){return this.weekYear()%100}),R(0,["GG",2],0,functio
 n(){return this.isoWeekYear()%100}),Pb("gggg","weekYear"),Pb("ggggg","weekYear"),Pb("GGGG","isoWeekYear"),Pb("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),W("G",Fd),W("g",Fd),W("GG",yd,ud),W("gg",yd,ud),W("GGGG",Cd,wd),W("gggg",Cd,wd),W("GGGGG",Dd,xd),W("ggggg",Dd,xd),_(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=r(a)}),_(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),R("Q",0,"Qo","quarter"),J("quarter","Q"),W("Q",td),$("Q",function(a,b){b[Nd]=3*(r(a)-1)}),R("w",["ww",2],"wo","week"),R("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),W("w",yd),W("ww",yd,ud),W("W",yd),W("WW",yd,ud),_(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=r(a)});var oe={dow:0,doy:6};R("D",["DD",2],"Do","date"),J("date","D"),W("D",yd),W("DD",yd,ud),W("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),$(["D","DD"],Od),$("Do",function(a,b){b[Od]=r(a.match(yd)[0],10)});var pe=M("Date",!0);R("d",0,"do","day"),R("dd",0,0,func
 tion(a){return this.localeData().weekdaysMin(this,a)}),R("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),R("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),R("e",0,0,"weekday"),R("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),W("d",yd),W("e",yd),W("E",yd),W("dd",function(a,b){return b.weekdaysMinRegex(a)}),W("ddd",function(a,b){return b.weekdaysShortRegex(a)}),W("dddd",function(a,b){return b.weekdaysRegex(a)}),_(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:j(c).invalidWeekday=a}),_(["d","e","E"],function(a,b,c,d){b[d]=r(a)});var qe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),re="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),se="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),te=Jd,ue=Jd,ve=Jd;R("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),W("DDD",Bd),W("DDDD",vd),$(["DDD","DDDD"],function(a,b,c){c._dayOfYear=r(a)}),R("H",["HH",2],0,"hour"),R("h",["h
 h",2],0,oc),R("k",["kk",2],0,pc),R("hmm",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)}),R("hmmss",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)+Q(this.seconds(),2)}),R("Hmm",0,0,function(){return""+this.hours()+Q(this.minutes(),2)}),R("Hmmss",0,0,function(){return""+this.hours()+Q(this.minutes(),2)+Q(this.seconds(),2)}),qc("a",!0),qc("A",!1),J("hour","h"),W("a",rc),W("A",rc),W("H",yd),W("h",yd),W("HH",yd,ud),W("hh",yd,ud),W("hmm",zd),W("hmmss",Ad),W("Hmm",zd),W("Hmmss",Ad),$(["H","HH"],Pd),$(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),$(["h","hh"],function(a,b,c){b[Pd]=r(a),j(c).bigHour=!0}),$("hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d)),j(c).bigHour=!0}),$("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e)),j(c).bigHour=!0}),$("Hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d))}),$("Hmmss",functi
 on(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e))});var we=/[ap]\.?m?\.?/i,xe=M("Hours",!0);R("m",["mm",2],0,"minute"),J("minute","m"),W("m",yd),W("mm",yd,ud),$(["m","mm"],Qd);var ye=M("Minutes",!1);R("s",["ss",2],0,"second"),J("second","s"),W("s",yd),W("ss",yd,ud),$(["s","ss"],Rd);var ze=M("Seconds",!1);R("S",0,0,function(){return~~(this.millisecond()/100)}),R(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),R(0,["SSS",3],0,"millisecond"),R(0,["SSSS",4],0,function(){return 10*this.millisecond()}),R(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),R(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),R(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),R(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),R(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),W("S",Bd,td),W("SS",Bd,ud),W("SSS",Bd,vd);var Ae;for(Ae="SSSS";Ae.length<=9;Ae+="S")W(Ae,Ed
 );for(Ae="S";Ae.length<=9;Ae+="S")$(Ae,uc);var Be=M("Milliseconds",!1);R("z",0,0,"zoneAbbr"),R("zz",0,0,"zoneName");var Ce=o.prototype;Ce.add=le,Ce.calendar=kb,Ce.clone=lb,Ce.diff=sb,Ce.endOf=Eb,Ce.format=wb,Ce.from=xb,Ce.fromNow=yb,Ce.to=zb,Ce.toNow=Ab,Ce.get=P,Ce.invalidAt=Nb,Ce.isAfter=mb,Ce.isBefore=nb,Ce.isBetween=ob,Ce.isSame=pb,Ce.isSameOrAfter=qb,Ce.isSameOrBefore=rb,Ce.isValid=Lb,Ce.lang=ne,Ce.locale=Bb,Ce.localeData=Cb,Ce.max=ge,Ce.min=fe,Ce.parsingFlags=Mb,Ce.set=P,Ce.startOf=Db,Ce.subtract=me,Ce.toArray=Ib,Ce.toObject=Jb,Ce.toDate=Hb,Ce.toISOString=vb,Ce.toJSON=Kb,Ce.toString=ub,Ce.unix=Gb,Ce.valueOf=Fb,Ce.creationData=Ob,Ce.year=ee,Ce.isLeapYear=ta,Ce.weekYear=Qb,Ce.isoWeekYear=Rb,Ce.quarter=Ce.quarters=Wb,Ce.month=ha,Ce.daysInMonth=ia,Ce.week=Ce.weeks=$b,Ce.isoWeek=Ce.isoWeeks=_b,Ce.weeksInYear=Tb,Ce.isoWeeksInYear=Sb,Ce.date=pe,Ce.day=Ce.days=gc,Ce.weekday=hc,Ce.isoWeekday=ic,Ce.dayOfYear=nc,Ce.hour=Ce.hours=xe,Ce.minute=Ce.minutes=ye,Ce.second=Ce.seconds=ze,Ce.millis
 econd=Ce.milliseconds=Be,Ce.utcOffset=Ua,Ce.utc=Wa,Ce.local=Xa,Ce.parseZone=Ya,Ce.hasAlignedHourOffset=Za,Ce.isDST=$a,Ce.isDSTShifted=_a,Ce.isLocal=ab,Ce.isUtcOffset=bb,Ce.isUtc=cb,Ce.isUTC=cb,Ce.zoneAbbr=vc,Ce.zoneName=wc,Ce.dates=u("dates accessor is deprecated. Use date instead.",pe),Ce.months=u("months accessor is deprecated. Use month instead",ha),Ce.years=u("years accessor is deprecated. Use year instead",ee),Ce.zone=u("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Va);var De=Ce,Ee={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Fe={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ge="Invalid date",He="%d",Ie=/\d{1,2}/,Je={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M
 :"a month",MM:"%d months",y:"a year",yy:"%d years"},Ke=A.prototype;Ke._calendar=Ee,Ke.calendar=zc,Ke._longDateFormat=Fe,Ke.longDateFormat=Ac,Ke._invalidDate=Ge,Ke.invalidDate=Bc,Ke._ordinal=He,Ke.ordinal=Cc,Ke._ordinalParse=Ie,Ke.preparse=Dc,Ke.postformat=Dc,Ke._relativeTime=Je,Ke.relativeTime=Ec,Ke.pastFuture=Fc,Ke.set=y,Ke.months=ca,Ke._months=Wd,Ke.monthsShort=da,Ke._monthsShort=Xd,Ke.monthsParse=fa,Ke._monthsRegex=Zd,Ke.monthsRegex=ka,Ke._monthsShortRegex=Yd,Ke.monthsShortRegex=ja,Ke.week=Xb,Ke._week=oe,Ke.firstDayOfYear=Zb,Ke.firstDayOfWeek=Yb,Ke.weekdays=bc,Ke._weekdays=qe,Ke.weekdaysMin=dc,Ke._weekdaysMin=se,Ke.weekdaysShort=cc,Ke._weekdaysShort=re,Ke.weekdaysParse=fc,Ke._weekdaysRegex=te,Ke.weekdaysRegex=jc,Ke._weekdaysShortRegex=ue,Ke.weekdaysShortRegex=kc,Ke._weekdaysMinRegex=ve,Ke.weekdaysMinRegex=lc,Ke.isPM=sc,Ke._meridiemParse=we,Ke.meridiem=tc,E("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===r(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"
 rd":"th";return a+c}}),a.lang=u("moment.lang is deprecated. Use moment.locale instead.",E),a.langData=u("moment.langData is deprecated. Use moment.localeData instead.",H);var Le=Math.abs,Me=Yc("ms"),Ne=Yc("s"),Oe=Yc("m"),Pe=Yc("h"),Qe=Yc("d"),Re=Yc("w"),Se=Yc("M"),Te=Yc("y"),Ue=$c("milliseconds"),Ve=$c("seconds"),We=$c("minutes"),Xe=$c("hours"),Ye=$c("days"),Ze=$c("months"),$e=$c("years"),_e=Math.round,af={s:45,m:45,h:22,d:26,M:11},bf=Math.abs,cf=Oa.prototype;cf.abs=Oc,cf.add=Qc,cf.subtract=Rc,cf.as=Wc,cf.asMilliseconds=Me,cf.asSeconds=Ne,cf.asMinutes=Oe,cf.asHours=Pe,cf.asDays=Qe,cf.asWeeks=Re,cf.asMonths=Se,cf.asYears=Te,cf.valueOf=Xc,cf._bubble=Tc,cf.get=Zc,cf.milliseconds=Ue,cf.seconds=Ve,cf.minutes=We,cf.hours=Xe,cf.days=Ye,cf.weeks=_c,cf.months=Ze,cf.years=$e,cf.humanize=dd,cf.toISOString=ed,cf.toString=ed,cf.toJSON=ed,cf.locale=Bb,cf.localeData=Cb,cf.toIsoString=u("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ed),cf.lang=ne,R("X",0,0,"u
 nix"),R("x",0,0,"valueOf"),W("x",Fd),W("X",Id),$("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),$("x",function(a,b,c){c._d=new Date(r(a))}),a.version="2.13.0",b(Ka),a.fn=De,a.min=Ma,a.max=Na,a.now=he,a.utc=h,a.unix=xc,a.months=Jc,a.isDate=d,a.locale=E,a.invalid=l,a.duration=db,a.isMoment=p,a.weekdays=Lc,a.parseZone=yc,a.localeData=H,a.isDuration=Pa,a.monthsShort=Kc,a.weekdaysMin=Nc,a.defineLocale=F,a.updateLocale=G,a.locales=I,a.weekdaysShort=Mc,a.normalizeUnits=K,a.relativeTimeThreshold=cd,a.prototype=De;var df=a;return df});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2d4aff/contrib/views/slider/src/main/resources/ui/config.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/config.js b/contrib/views/slider/src/main/resources/ui/config.js
index 9527393..dadbcbf 100755
--- a/contrib/views/slider/src/main/resources/ui/config.js
+++ b/contrib/views/slider/src/main/resources/ui/config.js
@@ -52,7 +52,7 @@ exports.config = {
           'vendor/scripts/common/bs-popover.min.js',
           'vendor/scripts/common/ember-i18n-1.4.1.js',
           'vendor/scripts/common/bootstrap.js',
-          'vendor/scripts/common/moment.js'
+          'vendor/scripts/common/moment.min.js'
         ]
       }
     },
@@ -106,7 +106,7 @@ exports.config = {
               'vendor/scripts/common/bs-popover.min.js',
               'vendor/scripts/common/ember-i18n-1.4.1.js',
               'vendor/scripts/common/bootstrap.js',
-              'vendor/scripts/common/moment.js'
+              'vendor/scripts/common/moment.min.js'
             ]
           }
         }


[2/5] ambari git commit: Ambari-16017: Update Moment.js to latest stable version 2.13.0 (Sangeeta Ravindran via dili)

Posted by di...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2d4aff/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.js b/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.js
deleted file mode 100644
index b40374b..0000000
--- a/contrib/views/slider/src/main/resources/ui/vendor/scripts/common/moment.js
+++ /dev/null
@@ -1,7768 +0,0 @@
-//! moment.js
-//! version : 2.5.1
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-(function (undefined) {
-
-  /************************************
-   Constants
-   ************************************/
-
-  var moment,
-    VERSION = "2.5.1",
-    global = this,
-    round = Math.round,
-    i,
-
-    YEAR = 0,
-    MONTH = 1,
-    DATE = 2,
-    HOUR = 3,
-    MINUTE = 4,
-    SECOND = 5,
-    MILLISECOND = 6,
-
-  // internal storage for language config files
-    languages = {},
-
-  // moment internal properties
-    momentProperties = {
-      _isAMomentObject: null,
-      _i : null,
-      _f : null,
-      _l : null,
-      _strict : null,
-      _isUTC : null,
-      _offset : null,  // optional. Combine with _isUTC
-      _pf : null,
-      _lang : null  // optional
-    },
-
-  // check for nodeJS
-    hasModule = (typeof module !== 'undefined' && module.exports && typeof require !== 'undefined'),
-
-  // ASP.NET json date format regex
-    aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
-    aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
-
-  // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
-  // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
-    isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
-
-  // format tokens
-    formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
-    localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
-
-  // parsing token regexes
-    parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
-    parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
-    parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
-    parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
-    parseTokenDigits = /\d+/, // nonzero number of digits
-    parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
-    parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
-    parseTokenT = /T/i, // T (ISO separator)
-    parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
-
-  //strict parsing regexes
-    parseTokenOneDigit = /\d/, // 0 - 9
-    parseTokenTwoDigits = /\d\d/, // 00 - 99
-    parseTokenThreeDigits = /\d{3}/, // 000 - 999
-    parseTokenFourDigits = /\d{4}/, // 0000 - 9999
-    parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999
-    parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf
-
-  // iso 8601 regex
-  // 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)
-    isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-
-    isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
-
-    isoDates = [
-      ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
-      ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
-      ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
-      ['GGGG-[W]WW', /\d{4}-W\d{2}/],
-      ['YYYY-DDD', /\d{4}-\d{3}/]
-    ],
-
-  // iso time formats and regexes
-    isoTimes = [
-      ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/],
-      ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
-      ['HH:mm', /(T| )\d\d:\d\d/],
-      ['HH', /(T| )\d\d/]
-    ],
-
-  // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"]
-    parseTimezoneChunker = /([\+\-]|\d\d)/gi,
-
-  // getter and setter names
-    proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
-    unitMillisecondFactors = {
-      'Milliseconds' : 1,
-      'Seconds' : 1e3,
-      'Minutes' : 6e4,
-      'Hours' : 36e5,
-      'Days' : 864e5,
-      'Months' : 2592e6,
-      'Years' : 31536e6
-    },
-
-    unitAliases = {
-      ms : 'millisecond',
-      s : 'second',
-      m : 'minute',
-      h : 'hour',
-      d : 'day',
-      D : 'date',
-      w : 'week',
-      W : 'isoWeek',
-      M : 'month',
-      y : 'year',
-      DDD : 'dayOfYear',
-      e : 'weekday',
-      E : 'isoWeekday',
-      gg: 'weekYear',
-      GG: 'isoWeekYear'
-    },
-
-    camelFunctions = {
-      dayofyear : 'dayOfYear',
-      isoweekday : 'isoWeekday',
-      isoweek : 'isoWeek',
-      weekyear : 'weekYear',
-      isoweekyear : 'isoWeekYear'
-    },
-
-  // format function strings
-    formatFunctions = {},
-
-  // tokens to ordinalize and pad
-    ordinalizeTokens = 'DDD w W M D d'.split(' '),
-    paddedTokens = 'M D H h m s w W'.split(' '),
-
-    formatTokenFunctions = {
-      M    : function () {
-        return this.month() + 1;
-      },
-      MMM  : function (format) {
-        return this.lang().monthsShort(this, format);
-      },
-      MMMM : function (format) {
-        return this.lang().months(this, format);
-      },
-      D    : function () {
-        return this.date();
-      },
-      DDD  : function () {
-        return this.dayOfYear();
-      },
-      d    : function () {
-        return this.day();
-      },
-      dd   : function (format) {
-        return this.lang().weekdaysMin(this, format);
-      },
-      ddd  : function (format) {
-        return this.lang().weekdaysShort(this, format);
-      },
-      dddd : function (format) {
-        return this.lang().weekdays(this, format);
-      },
-      w    : function () {
-        return this.week();
-      },
-      W    : function () {
-        return this.isoWeek();
-      },
-      YY   : function () {
-        return leftZeroFill(this.year() % 100, 2);
-      },
-      YYYY : function () {
-        return leftZeroFill(this.year(), 4);
-      },
-      YYYYY : function () {
-        return leftZeroFill(this.year(), 5);
-      },
-      YYYYYY : function () {
-        var y = this.year(), sign = y >= 0 ? '+' : '-';
-        return sign + leftZeroFill(Math.abs(y), 6);
-      },
-      gg   : function () {
-        return leftZeroFill(this.weekYear() % 100, 2);
-      },
-      gggg : function () {
-        return leftZeroFill(this.weekYear(), 4);
-      },
-      ggggg : function () {
-        return leftZeroFill(this.weekYear(), 5);
-      },
-      GG   : function () {
-        return leftZeroFill(this.isoWeekYear() % 100, 2);
-      },
-      GGGG : function () {
-        return leftZeroFill(this.isoWeekYear(), 4);
-      },
-      GGGGG : function () {
-        return leftZeroFill(this.isoWeekYear(), 5);
-      },
-      e : function () {
-        return this.weekday();
-      },
-      E : function () {
-        return this.isoWeekday();
-      },
-      a    : function () {
-        return this.lang().meridiem(this.hours(), this.minutes(), true);
-      },
-      A    : function () {
-        return this.lang().meridiem(this.hours(), this.minutes(), false);
-      },
-      H    : function () {
-        return this.hours();
-      },
-      h    : function () {
-        return this.hours() % 12 || 12;
-      },
-      m    : function () {
-        return this.minutes();
-      },
-      s    : function () {
-        return this.seconds();
-      },
-      S    : function () {
-        return toInt(this.milliseconds() / 100);
-      },
-      SS   : function () {
-        return leftZeroFill(toInt(this.milliseconds() / 10), 2);
-      },
-      SSS  : function () {
-        return leftZeroFill(this.milliseconds(), 3);
-      },
-      SSSS : function () {
-        return leftZeroFill(this.milliseconds(), 3);
-      },
-      Z    : function () {
-        var a = -this.zone(),
-          b = "+";
-        if (a < 0) {
-          a = -a;
-          b = "-";
-        }
-        return b + leftZeroFill(toInt(a / 60), 2) + ":" + leftZeroFill(toInt(a) % 60, 2);
-      },
-      ZZ   : function () {
-        var a = -this.zone(),
-          b = "+";
-        if (a < 0) {
-          a = -a;
-          b = "-";
-        }
-        return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
-      },
-      z : function () {
-        return this.zoneAbbr();
-      },
-      zz : function () {
-        return this.zoneName();
-      },
-      X    : function () {
-        return this.unix();
-      },
-      Q : function () {
-        return this.quarter();
-      }
-    },
-
-    lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
-
-  function defaultParsingFlags() {
-    // We need to deep clone this object, and es5 standard is not very
-    // helpful.
-    return {
-      empty : false,
-      unusedTokens : [],
-      unusedInput : [],
-      overflow : -2,
-      charsLeftOver : 0,
-      nullInput : false,
-      invalidMonth : null,
-      invalidFormat : false,
-      userInvalidated : false,
-      iso: false
-    };
-  }
-
-  function padToken(func, count) {
-    return function (a) {
-      return leftZeroFill(func.call(this, a), count);
-    };
-  }
-  function ordinalizeToken(func, period) {
-    return function (a) {
-      return this.lang().ordinal(func.call(this, a), period);
-    };
-  }
-
-  while (ordinalizeTokens.length) {
-    i = ordinalizeTokens.pop();
-    formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
-  }
-  while (paddedTokens.length) {
-    i = paddedTokens.pop();
-    formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
-  }
-  formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
-
-
-  /************************************
-   Constructors
-   ************************************/
-
-  function Language() {
-
-  }
-
-  // Moment prototype object
-  function Moment(config) {
-    checkOverflow(config);
-    extend(this, config);
-  }
-
-  // Duration Constructor
-  function Duration(duration) {
-    var normalizedInput = normalizeObjectUnits(duration),
-      years = normalizedInput.year || 0,
-      months = normalizedInput.month || 0,
-      weeks = normalizedInput.week || 0,
-      days = normalizedInput.day || 0,
-      hours = normalizedInput.hour || 0,
-      minutes = normalizedInput.minute || 0,
-      seconds = normalizedInput.second || 0,
-      milliseconds = normalizedInput.millisecond || 0;
-
-    // representation for dateAddRemove
-    this._milliseconds = +milliseconds +
-      seconds * 1e3 + // 1000
-      minutes * 6e4 + // 1000 * 60
-      hours * 36e5; // 1000 * 60 * 60
-    // Because of dateAddRemove treats 24 hours as different from a
-    // day when working around DST, we need to store them separately
-    this._days = +days +
-      weeks * 7;
-    // It is impossible translate months into days without knowing
-    // which months you are are talking about, so we have to store
-    // it separately.
-    this._months = +months +
-      years * 12;
-
-    this._data = {};
-
-    this._bubble();
-  }
-
-  /************************************
-   Helpers
-   ************************************/
-
-
-  function extend(a, b) {
-    for (var i in b) {
-      if (b.hasOwnProperty(i)) {
-        a[i] = b[i];
-      }
-    }
-
-    if (b.hasOwnProperty("toString")) {
-      a.toString = b.toString;
-    }
-
-    if (b.hasOwnProperty("valueOf")) {
-      a.valueOf = b.valueOf;
-    }
-
-    return a;
-  }
-
-  function cloneMoment(m) {
-    var result = {}, i;
-    for (i in m) {
-      if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) {
-        result[i] = m[i];
-      }
-    }
-
-    return result;
-  }
-
-  function absRound(number) {
-    if (number < 0) {
-      return Math.ceil(number);
-    } else {
-      return Math.floor(number);
-    }
-  }
-
-  // left zero fill a number
-  // see http://jsperf.com/left-zero-filling for performance comparison
-  function leftZeroFill(number, targetLength, forceSign) {
-    var output = '' + Math.abs(number),
-      sign = number >= 0;
-
-    while (output.length < targetLength) {
-      output = '0' + output;
-    }
-    return (sign ? (forceSign ? '+' : '') : '-') + output;
-  }
-
-  // helper function for _.addTime and _.subtractTime
-  function addOrSubtractDurationFromMoment(mom, duration, isAdding, ignoreUpdateOffset) {
-    var milliseconds = duration._milliseconds,
-      days = duration._days,
-      months = duration._months,
-      minutes,
-      hours;
-
-    if (milliseconds) {
-      mom._d.setTime(+mom._d + milliseconds * isAdding);
-    }
-    // store the minutes and hours so we can restore them
-    if (days || months) {
-      minutes = mom.minute();
-      hours = mom.hour();
-    }
-    if (days) {
-      mom.date(mom.date() + days * isAdding);
-    }
-    if (months) {
-      mom.month(mom.month() + months * isAdding);
-    }
-    if (milliseconds && !ignoreUpdateOffset) {
-      moment.updateOffset(mom);
-    }
-    // restore the minutes and hours after possibly changing dst
-    if (days || months) {
-      mom.minute(minutes);
-      mom.hour(hours);
-    }
-  }
-
-  // check if is an array
-  function isArray(input) {
-    return Object.prototype.toString.call(input) === '[object Array]';
-  }
-
-  function isDate(input) {
-    return  Object.prototype.toString.call(input) === '[object Date]' ||
-      input instanceof Date;
-  }
-
-  // compare two arrays, return the number of differences
-  function compareArrays(array1, array2, dontConvert) {
-    var len = Math.min(array1.length, array2.length),
-      lengthDiff = Math.abs(array1.length - array2.length),
-      diffs = 0,
-      i;
-    for (i = 0; i < len; i++) {
-      if ((dontConvert && array1[i] !== array2[i]) ||
-        (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
-        diffs++;
-      }
-    }
-    return diffs + lengthDiff;
-  }
-
-  function normalizeUnits(units) {
-    if (units) {
-      var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
-      units = unitAliases[units] || camelFunctions[lowered] || lowered;
-    }
-    return units;
-  }
-
-  function normalizeObjectUnits(inputObject) {
-    var normalizedInput = {},
-      normalizedProp,
-      prop;
-
-    for (prop in inputObject) {
-      if (inputObject.hasOwnProperty(prop)) {
-        normalizedProp = normalizeUnits(prop);
-        if (normalizedProp) {
-          normalizedInput[normalizedProp] = inputObject[prop];
-        }
-      }
-    }
-
-    return normalizedInput;
-  }
-
-  function makeList(field) {
-    var count, setter;
-
-    if (field.indexOf('week') === 0) {
-      count = 7;
-      setter = 'day';
-    }
-    else if (field.indexOf('month') === 0) {
-      count = 12;
-      setter = 'month';
-    }
-    else {
-      return;
-    }
-
-    moment[field] = function (format, index) {
-      var i, getter,
-        method = moment.fn._lang[field],
-        results = [];
-
-      if (typeof format === 'number') {
-        index = format;
-        format = undefined;
-      }
-
-      getter = function (i) {
-        var m = moment().utc().set(setter, i);
-        return method.call(moment.fn._lang, m, format || '');
-      };
-
-      if (index != null) {
-        return getter(index);
-      }
-      else {
-        for (i = 0; i < count; i++) {
-          results.push(getter(i));
-        }
-        return results;
-      }
-    };
-  }
-
-  function toInt(argumentForCoercion) {
-    var coercedNumber = +argumentForCoercion,
-      value = 0;
-
-    if (coercedNumber !== 0 && isFinite(coercedNumber)) {
-      if (coercedNumber >= 0) {
-        value = Math.floor(coercedNumber);
-      } else {
-        value = Math.ceil(coercedNumber);
-      }
-    }
-
-    return value;
-  }
-
-  function daysInMonth(year, month) {
-    return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
-  }
-
-  function daysInYear(year) {
-    return isLeapYear(year) ? 366 : 365;
-  }
-
-  function isLeapYear(year) {
-    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
-  }
-
-  function checkOverflow(m) {
-    var overflow;
-    if (m._a && m._pf.overflow === -2) {
-      overflow =
-        m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
-          m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
-            m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR :
-              m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
-                m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
-                  m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
-                    -1;
-
-      if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
-        overflow = DATE;
-      }
-
-      m._pf.overflow = overflow;
-    }
-  }
-
-  function isValid(m) {
-    if (m._isValid == null) {
-      m._isValid = !isNaN(m._d.getTime()) &&
-        m._pf.overflow < 0 &&
-        !m._pf.empty &&
-        !m._pf.invalidMonth &&
-        !m._pf.nullInput &&
-        !m._pf.invalidFormat &&
-        !m._pf.userInvalidated;
-
-      if (m._strict) {
-        m._isValid = m._isValid &&
-          m._pf.charsLeftOver === 0 &&
-          m._pf.unusedTokens.length === 0;
-      }
-    }
-    return m._isValid;
-  }
-
-  function normalizeLanguage(key) {
-    return key ? key.toLowerCase().replace('_', '-') : key;
-  }
-
-  // Return a moment from input, that is local/utc/zone equivalent to model.
-  function makeAs(input, model) {
-    return model._isUTC ? moment(input).zone(model._offset || 0) :
-      moment(input).local();
-  }
-
-  /************************************
-   Languages
-   ************************************/
-
-
-  extend(Language.prototype, {
-
-    set : function (config) {
-      var prop, i;
-      for (i in config) {
-        prop = config[i];
-        if (typeof prop === 'function') {
-          this[i] = prop;
-        } else {
-          this['_' + i] = prop;
-        }
-      }
-    },
-
-    _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
-    months : function (m) {
-      return this._months[m.month()];
-    },
-
-    _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
-    monthsShort : function (m) {
-      return this._monthsShort[m.month()];
-    },
-
-    monthsParse : function (monthName) {
-      var i, mom, regex;
-
-      if (!this._monthsParse) {
-        this._monthsParse = [];
-      }
-
-      for (i = 0; i < 12; i++) {
-        // make the regex if we don't have it already
-        if (!this._monthsParse[i]) {
-          mom = moment.utc([2000, i]);
-          regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
-          this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
-        }
-        // test the regex
-        if (this._monthsParse[i].test(monthName)) {
-          return i;
-        }
-      }
-    },
-
-    _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
-    weekdays : function (m) {
-      return this._weekdays[m.day()];
-    },
-
-    _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
-    weekdaysShort : function (m) {
-      return this._weekdaysShort[m.day()];
-    },
-
-    _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
-    weekdaysMin : function (m) {
-      return this._weekdaysMin[m.day()];
-    },
-
-    weekdaysParse : function (weekdayName) {
-      var i, mom, regex;
-
-      if (!this._weekdaysParse) {
-        this._weekdaysParse = [];
-      }
-
-      for (i = 0; i < 7; i++) {
-        // make the regex if we don't have it already
-        if (!this._weekdaysParse[i]) {
-          mom = moment([2000, 1]).day(i);
-          regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
-          this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
-        }
-        // test the regex
-        if (this._weekdaysParse[i].test(weekdayName)) {
-          return i;
-        }
-      }
-    },
-
-    _longDateFormat : {
-      LT : "h:mm A",
-      L : "MM/DD/YYYY",
-      LL : "MMMM D YYYY",
-      LLL : "MMMM D YYYY LT",
-      LLLL : "dddd, MMMM D YYYY LT"
-    },
-    longDateFormat : function (key) {
-      var output = this._longDateFormat[key];
-      if (!output && this._longDateFormat[key.toUpperCase()]) {
-        output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
-          return val.slice(1);
-        });
-        this._longDateFormat[key] = output;
-      }
-      return output;
-    },
-
-    isPM : function (input) {
-      // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
-      // Using charAt should be more compatible.
-      return ((input + '').toLowerCase().charAt(0) === 'p');
-    },
-
-    _meridiemParse : /[ap]\.?m?\.?/i,
-    meridiem : function (hours, minutes, isLower) {
-      if (hours > 11) {
-        return isLower ? 'pm' : 'PM';
-      } else {
-        return isLower ? 'am' : 'AM';
-      }
-    },
-
-    _calendar : {
-      sameDay : '[Today at] LT',
-      nextDay : '[Tomorrow at] LT',
-      nextWeek : 'dddd [at] LT',
-      lastDay : '[Yesterday at] LT',
-      lastWeek : '[Last] dddd [at] LT',
-      sameElse : 'L'
-    },
-    calendar : function (key, mom) {
-      var output = this._calendar[key];
-      return typeof output === 'function' ? output.apply(mom) : output;
-    },
-
-    _relativeTime : {
-      future : "in %s",
-      past : "%s ago",
-      s : "a few seconds",
-      m : "a minute",
-      mm : "%d minutes",
-      h : "an hour",
-      hh : "%d hours",
-      d : "a day",
-      dd : "%d days",
-      M : "a month",
-      MM : "%d months",
-      y : "a year",
-      yy : "%d years"
-    },
-    relativeTime : function (number, withoutSuffix, string, isFuture) {
-      var output = this._relativeTime[string];
-      return (typeof output === 'function') ?
-        output(number, withoutSuffix, string, isFuture) :
-        output.replace(/%d/i, number);
-    },
-    pastFuture : function (diff, output) {
-      var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
-      return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
-    },
-
-    ordinal : function (number) {
-      return this._ordinal.replace("%d", number);
-    },
-    _ordinal : "%d",
-
-    preparse : function (string) {
-      return string;
-    },
-
-    postformat : function (string) {
-      return string;
-    },
-
-    week : function (mom) {
-      return weekOfYear(mom, this._week.dow, this._week.doy).week;
-    },
-
-    _week : {
-      dow : 0, // Sunday is the first day of the week.
-      doy : 6  // The week that contains Jan 1st is the first week of the year.
-    },
-
-    _invalidDate: 'Invalid date',
-    invalidDate: function () {
-      return this._invalidDate;
-    }
-  });
-
-  // Loads a language definition into the `languages` cache.  The function
-  // takes a key and optionally values.  If not in the browser and no values
-  // are provided, it will load the language file module.  As a convenience,
-  // this function also returns the language values.
-  function loadLang(key, values) {
-    values.abbr = key;
-    if (!languages[key]) {
-      languages[key] = new Language();
-    }
-    languages[key].set(values);
-    return languages[key];
-  }
-
-  // Remove a language from the `languages` cache. Mostly useful in tests.
-  function unloadLang(key) {
-    delete languages[key];
-  }
-
-  // Determines which language definition to use and returns it.
-  //
-  // With no parameters, it will return the global language.  If you
-  // pass in a language key, such as 'en', it will return the
-  // definition for 'en', so long as 'en' has already been loaded using
-  // moment.lang.
-  function getLangDefinition(key) {
-    var i = 0, j, lang, next, split,
-      get = function (k) {
-        if (!languages[k] && hasModule) {
-          try {
-            require('./lang/' + k);
-          } catch (e) { }
-        }
-        return languages[k];
-      };
-
-    if (!key) {
-      return moment.fn._lang;
-    }
-
-    if (!isArray(key)) {
-      //short-circuit everything else
-      lang = get(key);
-      if (lang) {
-        return lang;
-      }
-      key = [key];
-    }
-
-    //pick the language from the array
-    //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
-    //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
-    while (i < key.length) {
-      split = normalizeLanguage(key[i]).split('-');
-      j = split.length;
-      next = normalizeLanguage(key[i + 1]);
-      next = next ? next.split('-') : null;
-      while (j > 0) {
-        lang = get(split.slice(0, j).join('-'));
-        if (lang) {
-          return lang;
-        }
-        if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
-          //the next array item is better than a shallower substring of this one
-          break;
-        }
-        j--;
-      }
-      i++;
-    }
-    return moment.fn._lang;
-  }
-
-  /************************************
-   Formatting
-   ************************************/
-
-
-  function removeFormattingTokens(input) {
-    if (input.match(/\[[\s\S]/)) {
-      return input.replace(/^\[|\]$/g, "");
-    }
-    return input.replace(/\\/g, "");
-  }
-
-  function makeFormatFunction(format) {
-    var array = format.match(formattingTokens), i, length;
-
-    for (i = 0, length = array.length; i < length; i++) {
-      if (formatTokenFunctions[array[i]]) {
-        array[i] = formatTokenFunctions[array[i]];
-      } else {
-        array[i] = removeFormattingTokens(array[i]);
-      }
-    }
-
-    return function (mom) {
-      var output = "";
-      for (i = 0; i < length; i++) {
-        output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
-      }
-      return output;
-    };
-  }
-
-  // format date using native date object
-  function formatMoment(m, format) {
-
-    if (!m.isValid()) {
-      return m.lang().invalidDate();
-    }
-
-    format = expandFormat(format, m.lang());
-
-    if (!formatFunctions[format]) {
-      formatFunctions[format] = makeFormatFunction(format);
-    }
-
-    return formatFunctions[format](m);
-  }
-
-  function expandFormat(format, lang) {
-    var i = 5;
-
-    function replaceLongDateFormatTokens(input) {
-      return lang.longDateFormat(input) || input;
-    }
-
-    localFormattingTokens.lastIndex = 0;
-    while (i >= 0 && localFormattingTokens.test(format)) {
-      format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
-      localFormattingTokens.lastIndex = 0;
-      i -= 1;
-    }
-
-    return format;
-  }
-
-
-  /************************************
-   Parsing
-   ************************************/
-
-
-    // get the regex to find the next token
-  function getParseRegexForToken(token, config) {
-    var a, strict = config._strict;
-    switch (token) {
-      case 'DDDD':
-        return parseTokenThreeDigits;
-      case 'YYYY':
-      case 'GGGG':
-      case 'gggg':
-        return strict ? parseTokenFourDigits : parseTokenOneToFourDigits;
-      case 'Y':
-      case 'G':
-      case 'g':
-        return parseTokenSignedNumber;
-      case 'YYYYYY':
-      case 'YYYYY':
-      case 'GGGGG':
-      case 'ggggg':
-        return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
-      case 'S':
-        if (strict) { return parseTokenOneDigit; }
-      /* falls through */
-      case 'SS':
-        if (strict) { return parseTokenTwoDigits; }
-      /* falls through */
-      case 'SSS':
-        if (strict) { return parseTokenThreeDigits; }
-      /* falls through */
-      case 'DDD':
-        return parseTokenOneToThreeDigits;
-      case 'MMM':
-      case 'MMMM':
-      case 'dd':
-      case 'ddd':
-      case 'dddd':
-        return parseTokenWord;
-      case 'a':
-      case 'A':
-        return getLangDefinition(config._l)._meridiemParse;
-      case 'X':
-        return parseTokenTimestampMs;
-      case 'Z':
-      case 'ZZ':
-        return parseTokenTimezone;
-      case 'T':
-        return parseTokenT;
-      case 'SSSS':
-        return parseTokenDigits;
-      case 'MM':
-      case 'DD':
-      case 'YY':
-      case 'GG':
-      case 'gg':
-      case 'HH':
-      case 'hh':
-      case 'mm':
-      case 'ss':
-      case 'ww':
-      case 'WW':
-        return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
-      case 'M':
-      case 'D':
-      case 'd':
-      case 'H':
-      case 'h':
-      case 'm':
-      case 's':
-      case 'w':
-      case 'W':
-      case 'e':
-      case 'E':
-        return parseTokenOneOrTwoDigits;
-      default :
-        a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i"));
-        return a;
-    }
-  }
-
-  function timezoneMinutesFromString(string) {
-    string = string || "";
-    var possibleTzMatches = (string.match(parseTokenTimezone) || []),
-      tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
-      parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
-      minutes = +(parts[1] * 60) + toInt(parts[2]);
-
-    return parts[0] === '+' ? -minutes : minutes;
-  }
-
-  // function to convert string input to date
-  function addTimeToArrayFromToken(token, input, config) {
-    var a, datePartArray = config._a;
-
-    switch (token) {
-      // MONTH
-      case 'M' : // fall through to MM
-      case 'MM' :
-        if (input != null) {
-          datePartArray[MONTH] = toInt(input) - 1;
-        }
-        break;
-      case 'MMM' : // fall through to MMMM
-      case 'MMMM' :
-        a = getLangDefinition(config._l).monthsParse(input);
-        // if we didn't find a month name, mark the date as invalid.
-        if (a != null) {
-          datePartArray[MONTH] = a;
-        } else {
-          config._pf.invalidMonth = input;
-        }
-        break;
-      // DAY OF MONTH
-      case 'D' : // fall through to DD
-      case 'DD' :
-        if (input != null) {
-          datePartArray[DATE] = toInt(input);
-        }
-        break;
-      // DAY OF YEAR
-      case 'DDD' : // fall through to DDDD
-      case 'DDDD' :
-        if (input != null) {
-          config._dayOfYear = toInt(input);
-        }
-
-        break;
-      // YEAR
-      case 'YY' :
-        datePartArray[YEAR] = toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
-        break;
-      case 'YYYY' :
-      case 'YYYYY' :
-      case 'YYYYYY' :
-        datePartArray[YEAR] = toInt(input);
-        break;
-      // AM / PM
-      case 'a' : // fall through to A
-      case 'A' :
-        config._isPm = getLangDefinition(config._l).isPM(input);
-        break;
-      // 24 HOUR
-      case 'H' : // fall through to hh
-      case 'HH' : // fall through to hh
-      case 'h' : // fall through to hh
-      case 'hh' :
-        datePartArray[HOUR] = toInt(input);
-        break;
-      // MINUTE
-      case 'm' : // fall through to mm
-      case 'mm' :
-        datePartArray[MINUTE] = toInt(input);
-        break;
-      // SECOND
-      case 's' : // fall through to ss
-      case 'ss' :
-        datePartArray[SECOND] = toInt(input);
-        break;
-      // MILLISECOND
-      case 'S' :
-      case 'SS' :
-      case 'SSS' :
-      case 'SSSS' :
-        datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
-        break;
-      // UNIX TIMESTAMP WITH MS
-      case 'X':
-        config._d = new Date(parseFloat(input) * 1000);
-        break;
-      // TIMEZONE
-      case 'Z' : // fall through to ZZ
-      case 'ZZ' :
-        config._useUTC = true;
-        config._tzm = timezoneMinutesFromString(input);
-        break;
-      case 'w':
-      case 'ww':
-      case 'W':
-      case 'WW':
-      case 'd':
-      case 'dd':
-      case 'ddd':
-      case 'dddd':
-      case 'e':
-      case 'E':
-        token = token.substr(0, 1);
-      /* falls through */
-      case 'gg':
-      case 'gggg':
-      case 'GG':
-      case 'GGGG':
-      case 'GGGGG':
-        token = token.substr(0, 2);
-        if (input) {
-          config._w = config._w || {};
-          config._w[token] = input;
-        }
-        break;
-    }
-  }
-
-  // convert an array to a date.
-  // the array should mirror the parameters below
-  // note: all values past the year are optional and will default to the lowest possible value.
-  // [year, month, day , hour, minute, second, millisecond]
-  function dateFromConfig(config) {
-    var i, date, input = [], currentDate,
-      yearToUse, fixYear, w, temp, lang, weekday, week;
-
-    if (config._d) {
-      return;
-    }
-
-    currentDate = currentDateArray(config);
-
-    //compute day of the year from weeks and weekdays
-    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
-      fixYear = function (val) {
-        var int_val = parseInt(val, 10);
-        return val ?
-          (val.length < 3 ? (int_val > 68 ? 1900 + int_val : 2000 + int_val) : int_val) :
-          (config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]);
-      };
-
-      w = config._w;
-      if (w.GG != null || w.W != null || w.E != null) {
-        temp = dayOfYearFromWeeks(fixYear(w.GG), w.W || 1, w.E, 4, 1);
-      }
-      else {
-        lang = getLangDefinition(config._l);
-        weekday = w.d != null ?  parseWeekday(w.d, lang) :
-          (w.e != null ?  parseInt(w.e, 10) + lang._week.dow : 0);
-
-        week = parseInt(w.w, 10) || 1;
-
-        //if we're parsing 'd', then the low day numbers may be next week
-        if (w.d != null && weekday < lang._week.dow) {
-          week++;
-        }
-
-        temp = dayOfYearFromWeeks(fixYear(w.gg), week, weekday, lang._week.doy, lang._week.dow);
-      }
-
-      config._a[YEAR] = temp.year;
-      config._dayOfYear = temp.dayOfYear;
-    }
-
-    //if the day of the year is set, figure out what it is
-    if (config._dayOfYear) {
-      yearToUse = config._a[YEAR] == null ? currentDate[YEAR] : config._a[YEAR];
-
-      if (config._dayOfYear > daysInYear(yearToUse)) {
-        config._pf._overflowDayOfYear = true;
-      }
-
-      date = makeUTCDate(yearToUse, 0, config._dayOfYear);
-      config._a[MONTH] = date.getUTCMonth();
-      config._a[DATE] = date.getUTCDate();
-    }
-
-    // Default to current date.
-    // * if no year, month, day of month are given, default to today
-    // * if day of month is given, default month and year
-    // * if month is given, default only year
-    // * if year is given, don't default anything
-    for (i = 0; i < 3 && config._a[i] == null; ++i) {
-      config._a[i] = input[i] = currentDate[i];
-    }
-
-    // Zero out whatever was not defaulted, including time
-    for (; i < 7; i++) {
-      config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
-    }
-
-    // add the offsets to the time to be parsed so that we can have a clean array for checking isValid
-    input[HOUR] += toInt((config._tzm || 0) / 60);
-    input[MINUTE] += toInt((config._tzm || 0) % 60);
-
-    config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
-  }
-
-  function dateFromObject(config) {
-    var normalizedInput;
-
-    if (config._d) {
-      return;
-    }
-
-    normalizedInput = normalizeObjectUnits(config._i);
-    config._a = [
-      normalizedInput.year,
-      normalizedInput.month,
-      normalizedInput.day,
-      normalizedInput.hour,
-      normalizedInput.minute,
-      normalizedInput.second,
-      normalizedInput.millisecond
-    ];
-
-    dateFromConfig(config);
-  }
-
-  function currentDateArray(config) {
-    var now = new Date();
-    if (config._useUTC) {
-      return [
-        now.getUTCFullYear(),
-        now.getUTCMonth(),
-        now.getUTCDate()
-      ];
-    } else {
-      return [now.getFullYear(), now.getMonth(), now.getDate()];
-    }
-  }
-
-  // date from string and format string
-  function makeDateFromStringAndFormat(config) {
-
-    config._a = [];
-    config._pf.empty = true;
-
-    // This array is used to make a Date, either with `new Date` or `Date.UTC`
-    var lang = getLangDefinition(config._l),
-      string = '' + config._i,
-      i, parsedInput, tokens, token, skipped,
-      stringLength = string.length,
-      totalParsedInputLength = 0;
-
-    tokens = expandFormat(config._f, lang).match(formattingTokens) || [];
-
-    for (i = 0; i < tokens.length; i++) {
-      token = tokens[i];
-      parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
-      if (parsedInput) {
-        skipped = string.substr(0, string.indexOf(parsedInput));
-        if (skipped.length > 0) {
-          config._pf.unusedInput.push(skipped);
-        }
-        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
-        totalParsedInputLength += parsedInput.length;
-      }
-      // don't parse if it's not a known token
-      if (formatTokenFunctions[token]) {
-        if (parsedInput) {
-          config._pf.empty = false;
-        }
-        else {
-          config._pf.unusedTokens.push(token);
-        }
-        addTimeToArrayFromToken(token, parsedInput, config);
-      }
-      else if (config._strict && !parsedInput) {
-        config._pf.unusedTokens.push(token);
-      }
-    }
-
-    // add remaining unparsed input length to the string
-    config._pf.charsLeftOver = stringLength - totalParsedInputLength;
-    if (string.length > 0) {
-      config._pf.unusedInput.push(string);
-    }
-
-    // handle am pm
-    if (config._isPm && config._a[HOUR] < 12) {
-      config._a[HOUR] += 12;
-    }
-    // if is 12 am, change hours to 0
-    if (config._isPm === false && config._a[HOUR] === 12) {
-      config._a[HOUR] = 0;
-    }
-
-    dateFromConfig(config);
-    checkOverflow(config);
-  }
-
-  function unescapeFormat(s) {
-    return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
-      return p1 || p2 || p3 || p4;
-    });
-  }
-
-  // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
-  function regexpEscape(s) {
-    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
-  }
-
-  // date from string and array of format strings
-  function makeDateFromStringAndArray(config) {
-    var tempConfig,
-      bestMoment,
-
-      scoreToBeat,
-      i,
-      currentScore;
-
-    if (config._f.length === 0) {
-      config._pf.invalidFormat = true;
-      config._d = new Date(NaN);
-      return;
-    }
-
-    for (i = 0; i < config._f.length; i++) {
-      currentScore = 0;
-      tempConfig = extend({}, config);
-      tempConfig._pf = defaultParsingFlags();
-      tempConfig._f = config._f[i];
-      makeDateFromStringAndFormat(tempConfig);
-
-      if (!isValid(tempConfig)) {
-        continue;
-      }
-
-      // if there is any input that was not parsed add a penalty for that format
-      currentScore += tempConfig._pf.charsLeftOver;
-
-      //or tokens
-      currentScore += tempConfig._pf.unusedTokens.length * 10;
-
-      tempConfig._pf.score = currentScore;
-
-      if (scoreToBeat == null || currentScore < scoreToBeat) {
-        scoreToBeat = currentScore;
-        bestMoment = tempConfig;
-      }
-    }
-
-    extend(config, bestMoment || tempConfig);
-  }
-
-  // date from iso format
-  function makeDateFromString(config) {
-    var i, l,
-      string = config._i,
-      match = isoRegex.exec(string);
-
-    if (match) {
-      config._pf.iso = true;
-      for (i = 0, l = isoDates.length; i < l; i++) {
-        if (isoDates[i][1].exec(string)) {
-          // match[5] should be "T" or undefined
-          config._f = isoDates[i][0] + (match[6] || " ");
-          break;
-        }
-      }
-      for (i = 0, l = isoTimes.length; i < l; i++) {
-        if (isoTimes[i][1].exec(string)) {
-          config._f += isoTimes[i][0];
-          break;
-        }
-      }
-      if (string.match(parseTokenTimezone)) {
-        config._f += "Z";
-      }
-      makeDateFromStringAndFormat(config);
-    }
-    else {
-      config._d = new Date(string);
-    }
-  }
-
-  function makeDateFromInput(config) {
-    var input = config._i,
-      matched = aspNetJsonRegex.exec(input);
-
-    if (input === undefined) {
-      config._d = new Date();
-    } else if (matched) {
-      config._d = new Date(+matched[1]);
-    } else if (typeof input === 'string') {
-      makeDateFromString(config);
-    } else if (isArray(input)) {
-      config._a = input.slice(0);
-      dateFromConfig(config);
-    } else if (isDate(input)) {
-      config._d = new Date(+input);
-    } else if (typeof(input) === 'object') {
-      dateFromObject(config);
-    } else {
-      config._d = new Date(input);
-    }
-  }
-
-  function makeDate(y, m, d, h, M, s, ms) {
-    //can't just apply() to create a date:
-    //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
-    var date = new Date(y, m, d, h, M, s, ms);
-
-    //the date constructor doesn't accept years < 1970
-    if (y < 1970) {
-      date.setFullYear(y);
-    }
-    return date;
-  }
-
-  function makeUTCDate(y) {
-    var date = new Date(Date.UTC.apply(null, arguments));
-    if (y < 1970) {
-      date.setUTCFullYear(y);
-    }
-    return date;
-  }
-
-  function parseWeekday(input, language) {
-    if (typeof input === 'string') {
-      if (!isNaN(input)) {
-        input = parseInt(input, 10);
-      }
-      else {
-        input = language.weekdaysParse(input);
-        if (typeof input !== 'number') {
-          return null;
-        }
-      }
-    }
-    return input;
-  }
-
-  /************************************
-   Relative Time
-   ************************************/
-
-
-    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
-  function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) {
-    return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
-  }
-
-  function relativeTime(milliseconds, withoutSuffix, lang) {
-    var seconds = round(Math.abs(milliseconds) / 1000),
-      minutes = round(seconds / 60),
-      hours = round(minutes / 60),
-      days = round(hours / 24),
-      years = round(days / 365),
-      args = seconds < 45 && ['s', seconds] ||
-        minutes === 1 && ['m'] ||
-        minutes < 45 && ['mm', minutes] ||
-        hours === 1 && ['h'] ||
-        hours < 22 && ['hh', hours] ||
-        days === 1 && ['d'] ||
-        days <= 25 && ['dd', days] ||
-        days <= 45 && ['M'] ||
-        days < 345 && ['MM', round(days / 30)] ||
-        years === 1 && ['y'] || ['yy', years];
-    args[2] = withoutSuffix;
-    args[3] = milliseconds > 0;
-    args[4] = lang;
-    return substituteTimeAgo.apply({}, args);
-  }
-
-
-  /************************************
-   Week of Year
-   ************************************/
-
-
-    // firstDayOfWeek       0 = sun, 6 = sat
-    //                      the day of the week that starts the week
-    //                      (usually sunday or monday)
-    // firstDayOfWeekOfYear 0 = sun, 6 = sat
-    //                      the first week is the week that contains the first
-    //                      of this day of the week
-    //                      (eg. ISO weeks use thursday (4))
-  function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
-    var end = firstDayOfWeekOfYear - firstDayOfWeek,
-      daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
-      adjustedMoment;
-
-
-    if (daysToDayOfWeek > end) {
-      daysToDayOfWeek -= 7;
-    }
-
-    if (daysToDayOfWeek < end - 7) {
-      daysToDayOfWeek += 7;
-    }
-
-    adjustedMoment = moment(mom).add('d', daysToDayOfWeek);
-    return {
-      week: Math.ceil(adjustedMoment.dayOfYear() / 7),
-      year: adjustedMoment.year()
-    };
-  }
-
-  //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-  function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
-    var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
-
-    weekday = weekday != null ? weekday : firstDayOfWeek;
-    daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
-    dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
-
-    return {
-      year: dayOfYear > 0 ? year : year - 1,
-      dayOfYear: dayOfYear > 0 ?  dayOfYear : daysInYear(year - 1) + dayOfYear
-    };
-  }
-
-  /************************************
-   Top Level Functions
-   ************************************/
-
-  function makeMoment(config) {
-    var input = config._i,
-      format = config._f;
-
-    if (input === null) {
-      return moment.invalid({nullInput: true});
-    }
-
-    if (typeof input === 'string') {
-      config._i = input = getLangDefinition().preparse(input);
-    }
-
-    if (moment.isMoment(input)) {
-      config = cloneMoment(input);
-
-      config._d = new Date(+input._d);
-    } else if (format) {
-      if (isArray(format)) {
-        makeDateFromStringAndArray(config);
-      } else {
-        makeDateFromStringAndFormat(config);
-      }
-    } else {
-      makeDateFromInput(config);
-    }
-
-    return new Moment(config);
-  }
-
-  moment = function (input, format, lang, strict) {
-    var c;
-
-    if (typeof(lang) === "boolean") {
-      strict = lang;
-      lang = undefined;
-    }
-    // object construction must be done this way.
-    // https://github.com/moment/moment/issues/1423
-    c = {};
-    c._isAMomentObject = true;
-    c._i = input;
-    c._f = format;
-    c._l = lang;
-    c._strict = strict;
-    c._isUTC = false;
-    c._pf = defaultParsingFlags();
-
-    return makeMoment(c);
-  };
-
-  // creating with utc
-  moment.utc = function (input, format, lang, strict) {
-    var c;
-
-    if (typeof(lang) === "boolean") {
-      strict = lang;
-      lang = undefined;
-    }
-    // object construction must be done this way.
-    // https://github.com/moment/moment/issues/1423
-    c = {};
-    c._isAMomentObject = true;
-    c._useUTC = true;
-    c._isUTC = true;
-    c._l = lang;
-    c._i = input;
-    c._f = format;
-    c._strict = strict;
-    c._pf = defaultParsingFlags();
-
-    return makeMoment(c).utc();
-  };
-
-  // creating with unix timestamp (in seconds)
-  moment.unix = function (input) {
-    return moment(input * 1000);
-  };
-
-  // duration
-  moment.duration = function (input, key) {
-    var duration = input,
-    // matching against regexp is expensive, do it on demand
-      match = null,
-      sign,
-      ret,
-      parseIso;
-
-    if (moment.isDuration(input)) {
-      duration = {
-        ms: input._milliseconds,
-        d: input._days,
-        M: input._months
-      };
-    } else if (typeof input === 'number') {
-      duration = {};
-      if (key) {
-        duration[key] = input;
-      } else {
-        duration.milliseconds = input;
-      }
-    } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
-      sign = (match[1] === "-") ? -1 : 1;
-      duration = {
-        y: 0,
-        d: toInt(match[DATE]) * sign,
-        h: toInt(match[HOUR]) * sign,
-        m: toInt(match[MINUTE]) * sign,
-        s: toInt(match[SECOND]) * sign,
-        ms: toInt(match[MILLISECOND]) * sign
-      };
-    } else if (!!(match = isoDurationRegex.exec(input))) {
-      sign = (match[1] === "-") ? -1 : 1;
-      parseIso = function (inp) {
-        // We'd normally use ~~inp for this, but unfortunately it also
-        // converts floats to ints.
-        // inp may be undefined, so careful calling replace on it.
-        var res = inp && parseFloat(inp.replace(',', '.'));
-        // apply sign while we're at it
-        return (isNaN(res) ? 0 : res) * sign;
-      };
-      duration = {
-        y: parseIso(match[2]),
-        M: parseIso(match[3]),
-        d: parseIso(match[4]),
-        h: parseIso(match[5]),
-        m: parseIso(match[6]),
-        s: parseIso(match[7]),
-        w: parseIso(match[8])
-      };
-    }
-
-    ret = new Duration(duration);
-
-    if (moment.isDuration(input) && input.hasOwnProperty('_lang')) {
-      ret._lang = input._lang;
-    }
-
-    return ret;
-  };
-
-  // version number
-  moment.version = VERSION;
-
-  // default format
-  moment.defaultFormat = isoFormat;
-
-  // This function will be called whenever a moment is mutated.
-  // It is intended to keep the offset in sync with the timezone.
-  moment.updateOffset = function () {};
-
-  // This function will load languages and then set the global language.  If
-  // no arguments are passed in, it will simply return the current global
-  // language key.
-  moment.lang = function (key, values) {
-    var r;
-    if (!key) {
-      return moment.fn._lang._abbr;
-    }
-    if (values) {
-      loadLang(normalizeLanguage(key), values);
-    } else if (values === null) {
-      unloadLang(key);
-      key = 'en';
-    } else if (!languages[key]) {
-      getLangDefinition(key);
-    }
-    r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key);
-    return r._abbr;
-  };
-
-  // returns language data
-  moment.langData = function (key) {
-    if (key && key._lang && key._lang._abbr) {
-      key = key._lang._abbr;
-    }
-    return getLangDefinition(key);
-  };
-
-  // compare moment object
-  moment.isMoment = function (obj) {
-    return obj instanceof Moment ||
-      (obj != null &&  obj.hasOwnProperty('_isAMomentObject'));
-  };
-
-  // for typechecking Duration objects
-  moment.isDuration = function (obj) {
-    return obj instanceof Duration;
-  };
-
-  for (i = lists.length - 1; i >= 0; --i) {
-    makeList(lists[i]);
-  }
-
-  moment.normalizeUnits = function (units) {
-    return normalizeUnits(units);
-  };
-
-  moment.invalid = function (flags) {
-    var m = moment.utc(NaN);
-    if (flags != null) {
-      extend(m._pf, flags);
-    }
-    else {
-      m._pf.userInvalidated = true;
-    }
-
-    return m;
-  };
-
-  moment.parseZone = function (input) {
-    return moment(input).parseZone();
-  };
-
-  /************************************
-   Moment Prototype
-   ************************************/
-
-
-  extend(moment.fn = Moment.prototype, {
-
-    clone : function () {
-      return moment(this);
-    },
-
-    valueOf : function () {
-      return +this._d + ((this._offset || 0) * 60000);
-    },
-
-    unix : function () {
-      return Math.floor(+this / 1000);
-    },
-
-    toString : function () {
-      return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
-    },
-
-    toDate : function () {
-      return this._offset ? new Date(+this) : this._d;
-    },
-
-    toISOString : function () {
-      var m = moment(this).utc();
-      if (0 < m.year() && m.year() <= 9999) {
-        return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
-      } else {
-        return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
-      }
-    },
-
-    toArray : function () {
-      var m = this;
-      return [
-        m.year(),
-        m.month(),
-        m.date(),
-        m.hours(),
-        m.minutes(),
-        m.seconds(),
-        m.milliseconds()
-      ];
-    },
-
-    isValid : function () {
-      return isValid(this);
-    },
-
-    isDSTShifted : function () {
-
-      if (this._a) {
-        return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
-      }
-
-      return false;
-    },
-
-    parsingFlags : function () {
-      return extend({}, this._pf);
-    },
-
-    invalidAt: function () {
-      return this._pf.overflow;
-    },
-
-    utc : function () {
-      return this.zone(0);
-    },
-
-    local : function () {
-      this.zone(0);
-      this._isUTC = false;
-      return this;
-    },
-
-    format : function (inputString) {
-      var output = formatMoment(this, inputString || moment.defaultFormat);
-      return this.lang().postformat(output);
-    },
-
-    add : function (input, val) {
-      var dur;
-      // switch args to support add('s', 1) and add(1, 's')
-      if (typeof input === 'string') {
-        dur = moment.duration(+val, input);
-      } else {
-        dur = moment.duration(input, val);
-      }
-      addOrSubtractDurationFromMoment(this, dur, 1);
-      return this;
-    },
-
-    subtract : function (input, val) {
-      var dur;
-      // switch args to support subtract('s', 1) and subtract(1, 's')
-      if (typeof input === 'string') {
-        dur = moment.duration(+val, input);
-      } else {
-        dur = moment.duration(input, val);
-      }
-      addOrSubtractDurationFromMoment(this, dur, -1);
-      return this;
-    },
-
-    diff : function (input, units, asFloat) {
-      var that = makeAs(input, this),
-        zoneDiff = (this.zone() - that.zone()) * 6e4,
-        diff, output;
-
-      units = normalizeUnits(units);
-
-      if (units === 'year' || units === 'month') {
-        // average number of days in the months in the given dates
-        diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2
-        // difference in months
-        output = ((this.year() - that.year()) * 12) + (this.month() - that.month());
-        // adjust by taking difference in days, average number of days
-        // and dst in the given months.
-        output += ((this - moment(this).startOf('month')) -
-          (that - moment(that).startOf('month'))) / diff;
-        // same as above but with zones, to negate all dst
-        output -= ((this.zone() - moment(this).startOf('month').zone()) -
-          (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff;
-        if (units === 'year') {
-          output = output / 12;
-        }
-      } else {
-        diff = (this - that);
-        output = units === 'second' ? diff / 1e3 : // 1000
-          units === 'minute' ? diff / 6e4 : // 1000 * 60
-            units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
-              units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
-                units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
-                  diff;
-      }
-      return asFloat ? output : absRound(output);
-    },
-
-    from : function (time, withoutSuffix) {
-      return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix);
-    },
-
-    fromNow : function (withoutSuffix) {
-      return this.from(moment(), withoutSuffix);
-    },
-
-    calendar : function () {
-      // We want to compare the start of today, vs this.
-      // Getting start-of-today depends on whether we're zone'd or not.
-      var sod = makeAs(moment(), this).startOf('day'),
-        diff = this.diff(sod, 'days', true),
-        format = diff < -6 ? 'sameElse' :
-          diff < -1 ? 'lastWeek' :
-            diff < 0 ? 'lastDay' :
-              diff < 1 ? 'sameDay' :
-                diff < 2 ? 'nextDay' :
-                  diff < 7 ? 'nextWeek' : 'sameElse';
-      return this.format(this.lang().calendar(format, this));
-    },
-
-    isLeapYear : function () {
-      return isLeapYear(this.year());
-    },
-
-    isDST : function () {
-      return (this.zone() < this.clone().month(0).zone() ||
-        this.zone() < this.clone().month(5).zone());
-    },
-
-    day : function (input) {
-      var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
-      if (input != null) {
-        input = parseWeekday(input, this.lang());
-        return this.add({ d : input - day });
-      } else {
-        return day;
-      }
-    },
-
-    month : function (input) {
-      var utc = this._isUTC ? 'UTC' : '',
-        dayOfMonth;
-
-      if (input != null) {
-        if (typeof input === 'string') {
-          input = this.lang().monthsParse(input);
-          if (typeof input !== 'number') {
-            return this;
-          }
-        }
-
-        dayOfMonth = this.date();
-        this.date(1);
-        this._d['set' + utc + 'Month'](input);
-        this.date(Math.min(dayOfMonth, this.daysInMonth()));
-
-        moment.updateOffset(this);
-        return this;
-      } else {
-        return this._d['get' + utc + 'Month']();
-      }
-    },
-
-    startOf: function (units) {
-      units = normalizeUnits(units);
-      // the following switch intentionally omits break keywords
-      // to utilize falling through the cases.
-      switch (units) {
-        case 'year':
-          this.month(0);
-        /* falls through */
-        case 'month':
-          this.date(1);
-        /* falls through */
-        case 'week':
-        case 'isoWeek':
-        case 'day':
-          this.hours(0);
-        /* falls through */
-        case 'hour':
-          this.minutes(0);
-        /* falls through */
-        case 'minute':
-          this.seconds(0);
-        /* falls through */
-        case 'second':
-          this.milliseconds(0);
-        /* falls through */
-      }
-
-      // weeks are a special case
-      if (units === 'week') {
-        this.weekday(0);
-      } else if (units === 'isoWeek') {
-        this.isoWeekday(1);
-      }
-
-      return this;
-    },
-
-    endOf: function (units) {
-      units = normalizeUnits(units);
-      return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1);
-    },
-
-    isAfter: function (input, units) {
-      units = typeof units !== 'undefined' ? units : 'millisecond';
-      return +this.clone().startOf(units) > +moment(input).startOf(units);
-    },
-
-    isBefore: function (input, units) {
-      units = typeof units !== 'undefined' ? units : 'millisecond';
-      return +this.clone().startOf(units) < +moment(input).startOf(units);
-    },
-
-    isSame: function (input, units) {
-      units = units || 'ms';
-      return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
-    },
-
-    min: function (other) {
-      other = moment.apply(null, arguments);
-      return other < this ? this : other;
-    },
-
-    max: function (other) {
-      other = moment.apply(null, arguments);
-      return other > this ? this : other;
-    },
-
-    zone : function (input) {
-      var offset = this._offset || 0;
-      if (input != null) {
-        if (typeof input === "string") {
-          input = timezoneMinutesFromString(input);
-        }
-        if (Math.abs(input) < 16) {
-          input = input * 60;
-        }
-        this._offset = input;
-        this._isUTC = true;
-        if (offset !== input) {
-          addOrSubtractDurationFromMoment(this, moment.duration(offset - input, 'm'), 1, true);
-        }
-      } else {
-        return this._isUTC ? offset : this._d.getTimezoneOffset();
-      }
-      return this;
-    },
-
-    zoneAbbr : function () {
-      return this._isUTC ? "UTC" : "";
-    },
-
-    zoneName : function () {
-      return this._isUTC ? "Coordinated Universal Time" : "";
-    },
-
-    parseZone : function () {
-      if (this._tzm) {
-        this.zone(this._tzm);
-      } else if (typeof this._i === 'string') {
-        this.zone(this._i);
-      }
-      return this;
-    },
-
-    hasAlignedHourOffset : function (input) {
-      if (!input) {
-        input = 0;
-      }
-      else {
-        input = moment(input).zone();
-      }
-
-      return (this.zone() - input) % 60 === 0;
-    },
-
-    daysInMonth : function () {
-      return daysInMonth(this.year(), this.month());
-    },
-
-    dayOfYear : function (input) {
-      var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
-      return input == null ? dayOfYear : this.add("d", (input - dayOfYear));
-    },
-
-    quarter : function () {
-      return Math.ceil((this.month() + 1.0) / 3.0);
-    },
-
-    weekYear : function (input) {
-      var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year;
-      return input == null ? year : this.add("y", (input - year));
-    },
-
-    isoWeekYear : function (input) {
-      var year = weekOfYear(this, 1, 4).year;
-      return input == null ? year : this.add("y", (input - year));
-    },
-
-    week : function (input) {
-      var week = this.lang().week(this);
-      return input == null ? week : this.add("d", (input - week) * 7);
-    },
-
-    isoWeek : function (input) {
-      var week = weekOfYear(this, 1, 4).week;
-      return input == null ? week : this.add("d", (input - week) * 7);
-    },
-
-    weekday : function (input) {
-      var weekday = (this.day() + 7 - this.lang()._week.dow) % 7;
-      return input == null ? weekday : this.add("d", input - weekday);
-    },
-
-    isoWeekday : function (input) {
-      // behaves the same as moment#day except
-      // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
-      // as a setter, sunday should belong to the previous week.
-      return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
-    },
-
-    get : function (units) {
-      units = normalizeUnits(units);
-      return this[units]();
-    },
-
-    set : function (units, value) {
-      units = normalizeUnits(units);
-      if (typeof this[units] === 'function') {
-        this[units](value);
-      }
-      return this;
-    },
-
-    // If passed a language key, it will set the language for this
-    // instance.  Otherwise, it will return the language configuration
-    // variables for this instance.
-    lang : function (key) {
-      if (key === undefined) {
-        return this._lang;
-      } else {
-        this._lang = getLangDefinition(key);
-        return this;
-      }
-    }
-  });
-
-  // helper for adding shortcuts
-  function makeGetterAndSetter(name, key) {
-    moment.fn[name] = moment.fn[name + 's'] = function (input) {
-      var utc = this._isUTC ? 'UTC' : '';
-      if (input != null) {
-        this._d['set' + utc + key](input);
-        moment.updateOffset(this);
-        return this;
-      } else {
-        return this._d['get' + utc + key]();
-      }
-    };
-  }
-
-  // loop through and add shortcuts (Month, Date, Hours, Minutes, Seconds, Milliseconds)
-  for (i = 0; i < proxyGettersAndSetters.length; i ++) {
-    makeGetterAndSetter(proxyGettersAndSetters[i].toLowerCase().replace(/s$/, ''), proxyGettersAndSetters[i]);
-  }
-
-  // add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear')
-  makeGetterAndSetter('year', 'FullYear');
-
-  // add plural methods
-  moment.fn.days = moment.fn.day;
-  moment.fn.months = moment.fn.month;
-  moment.fn.weeks = moment.fn.week;
-  moment.fn.isoWeeks = moment.fn.isoWeek;
-
-  // add aliased format methods
-  moment.fn.toJSON = moment.fn.toISOString;
-
-  /************************************
-   Duration Prototype
-   ************************************/
-
-
-  extend(moment.duration.fn = Duration.prototype, {
-
-    _bubble : function () {
-      var milliseconds = this._milliseconds,
-        days = this._days,
-        months = this._months,
-        data = this._data,
-        seconds, minutes, hours, years;
-
-      // The following code bubbles up values, see the tests for
-      // examples of what that means.
-      data.milliseconds = milliseconds % 1000;
-
-      seconds = absRound(milliseconds / 1000);
-      data.seconds = seconds % 60;
-
-      minutes = absRound(seconds / 60);
-      data.minutes = minutes % 60;
-
-      hours = absRound(minutes / 60);
-      data.hours = hours % 24;
-
-      days += absRound(hours / 24);
-      data.days = days % 30;
-
-      months += absRound(days / 30);
-      data.months = months % 12;
-
-      years = absRound(months / 12);
-      data.years = years;
-    },
-
-    weeks : function () {
-      return absRound(this.days() / 7);
-    },
-
-    valueOf : function () {
-      return this._milliseconds +
-        this._days * 864e5 +
-        (this._months % 12) * 2592e6 +
-        toInt(this._months / 12) * 31536e6;
-    },
-
-    humanize : function (withSuffix) {
-      var difference = +this,
-        output = relativeTime(difference, !withSuffix, this.lang());
-
-      if (withSuffix) {
-        output = this.lang().pastFuture(difference, output);
-      }
-
-      return this.lang().postformat(output);
-    },
-
-    add : function (input, val) {
-      // supports only 2.0-style add(1, 's') or add(moment)
-      var dur = moment.duration(input, val);
-
-      this._milliseconds += dur._milliseconds;
-      this._days += dur._days;
-      this._months += dur._months;
-
-      this._bubble();
-
-      return this;
-    },
-
-    subtract : function (input, val) {
-      var dur = moment.duration(input, val);
-
-      this._milliseconds -= dur._milliseconds;
-      this._days -= dur._days;
-      this._months -= dur._months;
-
-      this._bubble();
-
-      return this;
-    },
-
-    get : function (units) {
-      units = normalizeUnits(units);
-      return this[units.toLowerCase() + 's']();
-    },
-
-    as : function (units) {
-      units = normalizeUnits(units);
-      return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's']();
-    },
-
-    lang : moment.fn.lang,
-
-    toIsoString : function () {
-      // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
-      var years = Math.abs(this.years()),
-        months = Math.abs(this.months()),
-        days = Math.abs(this.days()),
-        hours = Math.abs(this.hours()),
-        minutes = Math.abs(this.minutes()),
-        seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);
-
-      if (!this.asSeconds()) {
-        // this is the same as C#'s (Noda) and python (isodate)...
-        // but not other JS (goog.date)
-        return 'P0D';
-      }
-
-      return (this.asSeconds() < 0 ? '-' : '') +
-        'P' +
-        (years ? years + 'Y' : '') +
-        (months ? months + 'M' : '') +
-        (days ? days + 'D' : '') +
-        ((hours || minutes || seconds) ? 'T' : '') +
-        (hours ? hours + 'H' : '') +
-        (minutes ? minutes + 'M' : '') +
-        (seconds ? seconds + 'S' : '');
-    }
-  });
-
-  function makeDurationGetter(name) {
-    moment.duration.fn[name] = function () {
-      return this._data[name];
-    };
-  }
-
-  function makeDurationAsGetter(name, factor) {
-    moment.duration.fn['as' + name] = function () {
-      return +this / factor;
-    };
-  }
-
-  for (i in unitMillisecondFactors) {
-    if (unitMillisecondFactors.hasOwnProperty(i)) {
-      makeDurationAsGetter(i, unitMillisecondFactors[i]);
-      makeDurationGetter(i.toLowerCase());
-    }
-  }
-
-  makeDurationAsGetter('Weeks', 6048e5);
-  moment.duration.fn.asMonths = function () {
-    return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12;
-  };
-
-
-  /************************************
-   Default Lang
-   ************************************/
-
-
-    // Set default language, other languages will inherit from English.
-  moment.lang('en', {
-    ordinal : function (number) {
-      var b = number % 10,
-        output = (toInt(number % 100 / 10) === 1) ? 'th' :
-          (b === 1) ? 'st' :
-            (b === 2) ? 'nd' :
-              (b === 3) ? 'rd' : 'th';
-      return number + output;
-    }
-  });
-
-  // moment.js language configuration
-// language : Moroccan Arabic (ar-ma)
-// author : ElFadili Yassine : https://github.com/ElFadiliY
-// author : Abdel Said : https://github.com/abdelsaid
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-    return moment.lang('ar-ma', {
-      months : "\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),
-      monthsShort : "\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),
-      weekdays : "\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),
-      weekdaysShort : "\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),
-      weekdaysMin : "\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),
-      longDateFormat : {
-        LT : "HH:mm",
-        L : "DD/MM/YYYY",
-        LL : "D MMMM YYYY",
-        LLL : "D MMMM YYYY LT",
-        LLLL : "dddd D MMMM YYYY LT"
-      },
-      calendar : {
-        sameDay: "[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",
-        nextDay: '[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        nextWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        lastDay: '[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        lastWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        sameElse: 'L'
-      },
-      relativeTime : {
-        future : "\u0641\u064a %s",
-        past : "\u0645\u0646\u0630 %s",
-        s : "\u062b\u0648\u0627\u0646",
-        m : "\u062f\u0642\u064a\u0642\u0629",
-        mm : "%d \u062f\u0642\u0627\u0626\u0642",
-        h : "\u0633\u0627\u0639\u0629",
-        hh : "%d \u0633\u0627\u0639\u0627\u062a",
-        d : "\u064a\u0648\u0645",
-        dd : "%d \u0623\u064a\u0627\u0645",
-        M : "\u0634\u0647\u0631",
-        MM : "%d \u0623\u0634\u0647\u0631",
-        y : "\u0633\u0646\u0629",
-        yy : "%d \u0633\u0646\u0648\u0627\u062a"
-      },
-      week : {
-        dow : 6, // Saturday is the first day of the week.
-        doy : 12  // The week that contains Jan 1st is the first week of the year.
-      }
-    });
-  }));
-// moment.js language configuration
-// language : Arabic (ar)
-// author : Abdel Said : https://github.com/abdelsaid
-// changes in months, weekdays : Ahmed Elkhatib
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-    return moment.lang('ar', {
-      months : "\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),
-      monthsShort : "\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),
-      weekdays : "\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),
-      weekdaysShort : "\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),
-      weekdaysMin : "\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),
-      longDateFormat : {
-        LT : "HH:mm",
-        L : "DD/MM/YYYY",
-        LL : "D MMMM YYYY",
-        LLL : "D MMMM YYYY LT",
-        LLLL : "dddd D MMMM YYYY LT"
-      },
-      calendar : {
-        sameDay: "[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",
-        nextDay: '[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        nextWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        lastDay: '[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        lastWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',
-        sameElse: 'L'
-      },
-      relativeTime : {
-        future : "\u0641\u064a %s",
-        past : "\u0645\u0646\u0630 %s",
-        s : "\u062b\u0648\u0627\u0646",
-        m : "\u062f\u0642\u064a\u0642\u0629",
-        mm : "%d \u062f\u0642\u0627\u0626\u0642",
-        h : "\u0633\u0627\u0639\u0629",
-        hh : "%d \u0633\u0627\u0639\u0627\u062a",
-        d : "\u064a\u0648\u0645",
-        dd : "%d \u0623\u064a\u0627\u0645",
-        M : "\u0634\u0647\u0631",
-        MM : "%d \u0623\u0634\u0647\u0631",
-        y : "\u0633\u0646\u0629",
-        yy : "%d \u0633\u0646\u0648\u0627\u062a"
-      },
-      week : {
-        dow : 6, // Saturday is the first day of the week.
-        doy : 12  // The week that contains Jan 1st is the first week of the year.
-      }
-    });
-  }));
-// moment.js language configuration
-// language : bulgarian (bg)
-// author : Krasen Borisov : https://github.com/kraz
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-    return moment.lang('bg', {
-      months : "\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),
-      monthsShort : "\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),
-      weekdays : "\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),
-      weekdaysShort : "\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),
-      weekdaysMin : "\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),
-      longDateFormat : {
-        LT : "H:mm",
-        L : "D.MM.YYYY",
-        LL : "D MMMM YYYY",
-        LLL : "D MMMM YYYY LT",
-        LLLL : "dddd, D MMMM YYYY LT"
-      },
-      calendar : {
-        sameDay : '[\u0414\u043d\u0435\u0441 \u0432] LT',
-        nextDay : '[\u0423\u0442\u0440\u0435 \u0432] LT',
-        nextWeek : 'dddd [\u0432] LT',
-        lastDay : '[\u0412\u0447\u0435\u0440\u0430 \u0432] LT',
-        lastWeek : function () {
-          switch (this.day()) {
-            case 0:
-            case 3:
-            case 6:
-              return '[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT';
-            case 1:
-            case 2:
-            case 4:
-            case 5:
-              return '[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT';
-          }
-        },
-        sameElse : 'L'
-      },
-      relativeTime : {
-        future : "\u0441\u043b\u0435\u0434 %s",
-        past : "\u043f\u0440\u0435\u0434\u0438 %s",
-        s : "\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",
-        m : "\u043c\u0438\u043d\u0443\u0442\u0430",
-        mm : "%d \u043c\u0438\u043d\u0443\u0442\u0438",
-        h : "\u0447\u0430\u0441",
-        hh : "%d \u0447\u0430\u0441\u0430",
-        d : "\u0434\u0435\u043d",
-        dd : "%d \u0434\u043d\u0438",
-        M : "\u043c\u0435\u0441\u0435\u0446",
-        MM : "%d \u043c\u0435\u0441\u0435\u0446\u0430",
-        y : "\u0433\u043e\u0434\u0438\u043d\u0430",
-        yy : "%d \u0433\u043e\u0434\u0438\u043d\u0438"
-      },
-      ordinal : function (number) {
-        var lastDigit = number % 10,
-          last2Digits = number % 100;
-        if (number === 0) {
-          return number + '-\u0435\u0432';
-        } else if (last2Digits === 0) {
-          return number + '-\u0435\u043d';
-        } else if (last2Digits > 10 && last2Digits < 20) {
-          return number + '-\u0442\u0438';
-        } else if (lastDigit === 1) {
-          return number + '-\u0432\u0438';
-        } else if (lastDigit === 2) {
-          return number + '-\u0440\u0438';
-        } else if (lastDigit === 7 || lastDigit === 8) {
-          return number + '-\u043c\u0438';
-        } else {
-          return number + '-\u0442\u0438';
-        }
-      },
-      week : {
-        dow : 1, // Monday is the first day of the week.
-        doy : 7  // The week that contains Jan 1st is the first week of the year.
-      }
-    });
-  }));
-// moment.js language configuration
-// language : breton (br)
-// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-    function relativeTimeWithMutation(number, withoutSuffix, key) {
-      var format = {
-        'mm': "munutenn",
-        'MM': "miz",
-        'dd': "devezh"
-      };
-      return number + ' ' + mutation(format[key], number);
-    }
-
-    function specialMutationForYears(number) {
-      switch (lastNumber(number)) {
-        case 1:
-        case 3:
-        case 4:
-        case 5:
-        case 9:
-          return number + ' bloaz';
-        default:
-          return number + ' vloaz';
-      }
-    }
-
-    function lastNumber(number) {
-      if (number > 9) {
-        return lastNumber(number % 10);
-      }
-      return number;
-    }
-
-    function mutation(text, number) {
-      if (number === 2) {
-        return softMutation(text);
-      }
-      return text;
-    }
-
-    function softMutation(text) {
-      var mutationTable = {
-        'm': 'v',
-        'b': 'v',
-        'd': 'z'
-      };
-      if (mutationTable[text.charAt(0)] === undefined) {
-        return text;
-      }
-      return mutationTable[text.charAt(0)] + text.substring(1);
-    }
-
-    return moment.lang('br', {
-      months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),
-      monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),
-      weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),
-      weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),
-      weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),
-      longDateFormat : {
-        LT : "h[e]mm A",
-        L : "DD/MM/YYYY",
-        LL : "D [a viz] MMMM YYYY",
-        LLL : "D [a viz] MMMM YYYY LT",
-        LLLL : "dddd, D [a viz] MMMM YYYY LT"
-      },
-      calendar : {
-        sameDay : '[Hiziv da] LT',
-        nextDay : '[Warc\'hoazh da] LT',
-        nextWeek : 'dddd [da] LT',
-        lastDay : '[Dec\'h da] LT',
-        lastWeek : 'dddd [paset da] LT',
-        sameElse : 'L'
-      },
-      relativeTime : {
-        future : "a-benn %s",
-        past : "%s 'zo",
-        s : "un nebeud segondenno�",
-        m : "ur vunutenn",
-        mm : relativeTimeWithMutation,
-        h : "un eur",
-        hh : "%d eur",
-        d : "un devezh",
-        dd : relativeTimeWithMutation,
-        M : "ur miz",
-        MM : relativeTimeWithMutation,
-        y : "ur bloaz",
-        yy : specialMutationForYears
-      },
-      ordinal : function (number) {
-        var output = (number === 1) ? 'a�' : 'vet';
-        return number + output;
-      },
-      week : {
-        dow : 1, // Monday is the first day of the week.
-        doy : 4  // The week that contains Jan 4th is the first week of the year.
-      }
-    });
-  }));
-// moment.js language configuration
-// language : bosnian (bs)
-// author : Nedim Cholich : https://github.com/frontyard
-// based on (hr) translation by Bojan Markovi\u0107
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-
-    function translate(number, withoutSuffix, key) {
-      var result = number + " ";
-      switch (key) {
-        case 'm':
-          return withoutSuffix ? 'jedna minuta' : 'jedne minute';
-        case 'mm':
-          if (number === 1) {
-            result += 'minuta';
-          } else if (number === 2 || number === 3 || number === 4) {
-            result += 'minute';
-          } else {
-            result += 'minuta';
-          }
-          return result;
-        case 'h':
-          return withoutSuffix ? 'jedan sat' : 'jednog sata';
-        case 'hh':
-          if (number === 1) {
-            result += 'sat';
-          } else if (number === 2 || number === 3 || number === 4) {
-            result += 'sata';
-          } else {
-            result += 'sati';
-          }
-          return result;
-        case 'dd':
-          if (number === 1) {
-            result += 'dan';
-          } else {
-            result += 'dana';
-          }
-          return result;
-        case 'MM':
-          if (number === 1) {
-            result += 'mjesec';
-          } else if (number === 2 || number === 3 || number === 4) {
-            result += 'mjeseca';
-          } else {
-            result += 'mjeseci';
-          }
-          return result;
-        case 'yy':
-          if (number === 1) {
-            result += 'godina';
-          } else if (number === 2 || number === 3 || number === 4) {
-            result += 'godine';
-          } else {
-            result += 'godina';
-          }
-          return result;
-      }
-    }
-
-    return moment.lang('bs', {
-      months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),
-      monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
-      weekdays : "nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),
-      weekdaysShort : "ned._pon._uto._sri._\u010det._pet._sub.".split("_"),
-      weekdaysMin : "ne_po_ut_sr_\u010de_pe_su".split("_"),
-      longDateFormat : {
-        LT : "H:mm",
-        L : "DD. MM. YYYY",
-        LL : "D. MMMM YYYY",
-        LLL : "D. MMMM YYYY LT",
-        LLLL : "dddd, D. MMMM YYYY LT"
-      },
-      calendar : {
-        sameDay  : '[danas u] LT',
-        nextDay  : '[sutra u] LT',
-
-        nextWeek : function () {
-          switch (this.day()) {
-            case 0:
-              return '[u] [nedjelju] [u] LT';
-            case 3:
-              return '[u] [srijedu] [u] LT';
-            case 6:
-              return '[u] [subotu] [u] LT';
-            case 1:
-            case 2:
-            case 4:
-            case 5:
-              return '[u] dddd [u] LT';
-          }
-        },
-        lastDay  : '[ju\u010der u] LT',
-        lastWeek : function () {
-          switch (this.day()) {
-            case 0:
-            case 3:
-              return '[pro\u0161lu] dddd [u] LT';
-            case 6:
-              return '[pro\u0161le] [subote] [u] LT';
-            case 1:
-            case 2:
-            case 4:
-            case 5:
-              return '[pro\u0161li] dddd [u] LT';
-          }
-        },
-        sameElse : 'L'
-      },
-      relativeTime : {
-        future : "za %s",
-        past   : "prije %s",
-        s      : "par sekundi",
-        m      : translate,
-        mm     : translate,
-        h      : translate,
-        hh     : translate,
-        d      : "dan",
-        dd     : translate,
-        M      : "mjesec",
-        MM     : translate,
-        y      : "godinu",
-        yy     : translate
-      },
-      ordinal : '%d.',
-      week : {
-        dow : 1, // Monday is the first day of the week.
-        doy : 7  // The week that contains Jan 1st is the first week of the year.
-      }
-    });
-  }));
-// moment.js language configuration
-// language : catalan (ca)
-// author : Juan G. Hurtado : https://github.com/juanghurtado
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-    return moment.lang('ca', {
-      months : "gener_febrer_mar�_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),
-      monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),
-      weekdays : "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),
-      weekdaysShort : "dg._dl._dt._dc._dj._dv._ds.".split("_"),
-      weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),
-      longDateFormat : {
-        LT : "H:mm",
-        L : "DD/MM/YYYY",
-        LL : "D MMMM YYYY",
-        LLL : "D MMMM YYYY LT",
-        LLLL : "dddd D MMMM YYYY LT"
-      },
-      calendar : {
-        sameDay : function () {
-          return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
-        },
-        nextDay : function () {
-          return '[dem� a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
-        },
-        nextWeek : function () {
-          return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
-        },
-        lastDay : function () {
-          return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
-        },
-        lastWeek : function () {
-          return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
-        },
-        sameElse : 'L'
-      },
-      relativeTime : {
-        future : "en %s",
-        past : "fa %s",
-        s : "uns segons",
-        m : "un minut",
-        mm : "%d minuts",
-        h : "una hora",
-        hh : "%d hores",
-        d : "un dia",
-        dd : "%d dies",
-        M : "un mes",
-        MM : "%d mesos",
-        y : "un any",
-        yy : "%d anys"
-      },
-      ordinal : '%d�',
-      week : {
-        dow : 1, // Monday is the first day of the week.
-        doy : 4  // The week that contains Jan 4th is the first week of the year.
-      }
-    });
-  }));
-// moment.js language configuration
-// language : czech (cs)
-// author : petrbela : https://github.com/petrbela
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-    var months = "leden_�nor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z�\u0159�_\u0159�jen_listopad_prosinec".split("_"),
-      monthsShort = "led_�no_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z�\u0159_\u0159�j_lis_pro".split("_");
-
-    function plural(n) {
-      return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
-    }
-
-    function translate(number, withoutSuffix, key, isFuture) {
-      var result = number + " ";
-      switch (key) {
-        case 's':  // a few seconds / in a few seconds / a few seconds ago
-          return (withoutSuffix || isFuture) ? 'p�r vte\u0159in' : 'p�r vte\u0159inami';
-        case 'm':  // a minute / in a minute / a minute ago
-          return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
-        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-          if (withoutSuffix || isFuture) {
-            return result + (plural(number) ? 'minuty' : 'minut');
-          } else {
-            return result + 'minutami';
-          }
-          break;
-        case 'h':  // an hour / in an hour / an hour ago
-          return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
-        case 'hh': // 9 hours / in 9 hours / 9 hours ago
-          if (withoutSuffix || isFuture) {
-            return result + (plural(number) ? 'hodiny' : 'hodin');
-          } else {
-            return result + 'hodinami';
-          }
-          break;
-        case 'd':  // a day / in a day / a day ago
-          return (withoutSuffix || isFuture) ? 'den' : 'dnem';
-        case 'dd': // 9 days / in 9 days / 9 days ago
-          if (withoutSuffix || isFuture) {
-            return result + (plural(number) ? 'dny' : 'dn�');
-          } else {
-            return result + 'dny';
-          }
-          break;
-        case 'M':  // a month / in a month / a month ago
-          return (withoutSuffix || isFuture) ? 'm\u011bs�c' : 'm\u011bs�cem';
-        case 'MM': // 9 months / in 9 months / 9 months ago
-          if (withoutSuffix || isFuture) {
-            return result + (plural(number) ? 'm\u011bs�ce' : 'm\u011bs�c\u016f');
-          } else {
-            return result + 'm\u011bs�ci';
-          }
-          break;
-        case 'y':  // a year / in a year / a year ago
-          return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
-        case 'yy': // 9 years / in 9 years / 9 years ago
-          if (withoutSuffix || isFuture) {
-            return result + (plural(number) ? 'roky' : 'let');
-          } else {
-            return result + 'lety';
-          }
-          break;
-      }
-    }
-
-    return moment.lang('cs', {
-      months : months,
-      monthsShort : monthsShort,
-      monthsParse : (function (months, monthsShort) {
-        var i, _monthsParse = [];
-        for (i = 0; i < 12; i++) {
-          // use custom parser to solve problem with July (\u010dervenec)
-          _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
-        }
-        return _monthsParse;
-      }(months, monthsShort)),
-      weekdays : "ned\u011ble_pond\u011bl�_�ter�_st\u0159eda_\u010dtvrtek_p�tek_sobota".split("_"),
-      weekdaysShort : "ne_po_�t_st_\u010dt_p�_so".split("_"),
-      weekdaysMin : "ne_po_�t_st_\u010dt_p�_so".split("_"),
-      longDateFormat : {
-        LT: "H:mm",
-        L : "DD.MM.YYYY",
-        LL : "D. MMMM YYYY",
-        LLL : "D. MMMM YYYY LT",
-        LLLL : "dddd D. MMMM YYYY LT"
-      },
-      calendar : {
-        sameDay: "[dnes v] LT",
-        nextDay: '[z�tra v] LT',
-        nextWeek: function () {
-          switch (this.day()) {
-            case 0:
-              return '[v ned\u011bli v] LT';
-            case 1:
-            case 2:
-              return '[v] dddd [v] LT';
-            case 3:
-              return '[ve st\u0159edu v] LT';
-            case 4:
-              return '[ve \u010dtvrtek v] LT';
-            case 5:
-              return '[v p�tek v] LT';
-            case 6:
-              return '[v sobotu v] LT';
-          }
-        },
-        lastDay: '[v\u010dera v] LT',
-        lastWeek: function () {
-          switch (this.day()) {
-            case 0:
-              return '[minulou ned\u011bli v] LT';
-            case 1:
-            case 2:
-              return '[minul�] dddd [v] LT';
-            case 3:
-              return '[minulou st\u0159edu v] LT';
-            case 4:
-            case 5:
-              return '[minul�] dddd [v] LT';
-            case 6:
-              return '[minulou sobotu v] LT';
-          }
-        },
-        sameElse: "L"
-      },
-      relativeTime : {
-        future : "za %s",
-        past : "p\u0159ed %s",
-        s : translate,
-        m : translate,
-        mm : translate,
-        h : translate,
-        hh : translate,
-        d : translate,
-        dd : translate,
-        M : translate,
-        MM : translate,
-        y : translate,
-        yy : translate
-      },
-      ordinal : '%d.',
-      week : {
-        dow : 1, // Monday is the first day of the week.
-        doy : 4  // The week that contains Jan 4th is the first week of the year.
-      }
-    });
-  }));
-// moment.js language configuration
-// language : chuvash (cv)
-// author : Anatoly Mironov : https://github.com/mirontoli
-
-  (function (factory) {
-    factory(moment);
-  }(function (moment) {
-    return moment.lang('cv', {
-      months : "\u043a\u0103\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u0103\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_�\u0115\u0440\u0442\u043c\u0435_\u0443\u0442\u0103_�\u0443\u0440\u043b\u0430_\u0430\u0432\u0103\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),
-      monthsShort : "\u043a\u0103\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_�\u0115\u0440_\u0443\u0442\u0103_�\u0443\u0440_\u0430\u0432_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),
-      weekdays : "\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u0115�\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u0103\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),
-      weekdaysShort : "\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u0115�_\u044d\u0440\u043d_\u0448\u0103\u043c".split("_"),
-      weekdaysMin : "\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a�_\u044d\u0440_\u0448\u043c".split("_"),
-      longDateFormat : {
-        LT : "HH:mm",
-        L : "DD-MM-YYYY",
-        LL : "YYYY [�\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115]",
-        LLL : "YYYY [�\u0443\u043b\u0445\u0438] 

<TRUNCATED>