diff --git a/dist/vue-chartjs.js b/dist/vue-chartjs.js index ce1dbf8..f7d18d0 100644 --- a/dist/vue-chartjs.js +++ b/dist/vue-chartjs.js @@ -1,22 +1,21 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.VueChartJs=t():e.VueChartJs=t()}(this,function(){return function(e){function t(a){if(n[a])return n[a].exports;var i=n[a]={exports:{},id:a,loaded:!1};return e[a].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="/",t(0)}([function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}var i=n(186),r=a(i),o=n(188),s=a(o),d=n(189),l=a(d),u=n(190),c=a(u),h=n(191),_=a(h),f=n(192),m=a(f),p=n(187),g=a(p),y={Bar:r["default"],Doughnut:s["default"],Line:l["default"],Pie:c["default"],PolarArea:_["default"],Radar:m["default"],Bubble:g["default"]};e.exports=y},function(e,t,n){(function(e){!function(t,n){e.exports=n()}(this,function(){"use strict";function t(){return ma.apply(null,arguments)}function a(e){ma=e}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function r(e){return"[object Object]"===Object.prototype.toString.call(e)}function o(e){var t;for(t in e)return!1;return!0}function s(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,a=[];for(n=0;n0)for(n in ga)a=ga[n],i=t[a],p(i)||(e[a]=i);return e}function y(e){g(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),ya===!1&&(ya=!0,t.updateOffset(this),ya=!1)}function v(e){return e instanceof y||null!=e&&null!=e._isAMomentObject}function M(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function b(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=M(t)),n}function L(e,t,n){var a,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),o=0;for(a=0;a0?"future":"past"];return w(n)?n(t):n.replace(/%s/i,t)}function O(e,t){var n=e.toLowerCase();Ta[n]=Ta[n+"s"]=Ta[t]=e}function W(e){return"string"==typeof e?Ta[e]||Ta[e.toLowerCase()]:void 0}function I(e){var t,n,a={};for(n in e)l(e,n)&&(t=W(n),t&&(a[t]=e[n]));return a}function E(e,t){Sa[e]=t}function R(e){var t=[];for(var n in e)t.push({unit:n,priority:Sa[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}function z(e,n){return function(a){return null!=a?(V(this,e,a),t.updateOffset(this,n),this):N(this,e)}}function N(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function V(e,t,n){e.isValid()&&e._d["set"+(e._isUTC?"UTC":"")+t](n)}function B(e){return e=W(e),w(this[e])?this[e]():this}function $(e,t){if("object"==typeof e){e=I(e);for(var n=R(e),a=0;a=0;return(r?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+a}function U(e,t,n,a){var i=a;"string"==typeof a&&(i=function(){return this[a]()}),e&&(Ca[e]=i),t&&(Ca[t[0]]=function(){return J(i.apply(this,arguments),t[1],t[2])}),n&&(Ca[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function G(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function q(e){var t,n,a=e.match(ja);for(t=0,n=a.length;t=0&&Aa.test(e);)e=e.replace(Aa,n),Aa.lastIndex=0,a-=1;return e}function X(e,t,n){Za[e]=w(t)?t:function(e,a){return e&&n?n:t}}function Q(e,t){return l(Za,e)?Za[e](t._strict,t._locale):new RegExp(ee(e))}function ee(e){return te(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,a,i){return t||n||a||i}))}function te(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ne(e,t){var n,a=t;for("string"==typeof e&&(e=[e]),"number"==typeof t&&(a=function(e,n){n[t]=b(e)}),n=0;n=0&&isFinite(s.getFullYear())&&s.setFullYear(e),s}function Me(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function be(e,t,n){var a=7+t-n,i=(7+Me(e,0,a).getUTCDay()-t)%7;return-i+a-1}function Le(e,t,n,a,i){var r,o,s=(7+n-a)%7,d=be(e,a,i),l=1+7*(t-1)+s+d;return l<=0?(r=e-1,o=pe(r)+l):l>pe(e)?(r=e+1,o=l-pe(e)):(r=e,o=l),{year:r,dayOfYear:o}}function ke(e,t,n){var a,i,r=be(e.year(),t,n),o=Math.floor((e.dayOfYear()-r-1)/7)+1;return o<1?(i=e.year()-1,a=o+Ye(i,t,n)):o>Ye(e.year(),t,n)?(a=o-Ye(e.year(),t,n),i=e.year()+1):(i=e.year(),a=o),{week:a,year:i}}function Ye(e,t,n){var a=be(e,t,n),i=be(e+1,t,n);return(pe(e)-a+i)/7}function xe(e){return ke(e,this._week.dow,this._week.doy).week}function we(){return this._week.dow}function De(){return this._week.doy}function Te(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function Se(e){var t=ke(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function je(e,t){return"string"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"==typeof e?e:null):parseInt(e,10)}function Ae(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function He(e,t){return i(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]}function Ce(e){return this._weekdaysShort[e.day()]}function Pe(e){return this._weekdaysMin[e.day()]}function Fe(e,t,n){var a,i,r,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)r=c([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?(i=ba.call(this._weekdaysParse,o),i!==-1?i:null):"ddd"===t?(i=ba.call(this._shortWeekdaysParse,o),i!==-1?i:null):(i=ba.call(this._minWeekdaysParse,o),i!==-1?i:null):"dddd"===t?(i=ba.call(this._weekdaysParse,o),i!==-1?i:(i=ba.call(this._shortWeekdaysParse,o),i!==-1?i:(i=ba.call(this._minWeekdaysParse,o),i!==-1?i:null))):"ddd"===t?(i=ba.call(this._shortWeekdaysParse,o),i!==-1?i:(i=ba.call(this._weekdaysParse,o),i!==-1?i:(i=ba.call(this._minWeekdaysParse,o),i!==-1?i:null))):(i=ba.call(this._minWeekdaysParse,o),i!==-1?i:(i=ba.call(this._weekdaysParse,o),i!==-1?i:(i=ba.call(this._shortWeekdaysParse,o),i!==-1?i:null)))}function Oe(e,t,n){var a,i,r;if(this._weekdaysParseExact)return Fe.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(i=c([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[a]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[a]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[a].test(e))return a;if(n&&"ddd"===t&&this._shortWeekdaysParse[a].test(e))return a;if(n&&"dd"===t&&this._minWeekdaysParse[a].test(e))return a;if(!n&&this._weekdaysParse[a].test(e))return a}}function We(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=je(e,this.localeData()),this.add(e-t,"d")):t}function Ie(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Ee(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Ae(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function Re(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=yi),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function ze(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=vi),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Ne(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Mi),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Ve(){function e(e,t){return t.length-e.length}var t,n,a,i,r,o=[],s=[],d=[],l=[];for(t=0;t<7;t++)n=c([2e3,1]).day(t),a=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),o.push(a),s.push(i),d.push(r),l.push(a),l.push(i),l.push(r);for(o.sort(e),s.sort(e),d.sort(e),l.sort(e),t=0;t<7;t++)s[t]=te(s[t]),d[t]=te(d[t]),l[t]=te(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Be(){return this.hours()%12||12}function $e(){return this.hours()||24}function Je(e,t){U(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ue(e,t){return t._meridiemParse}function Ge(e){return"p"===(e+"").toLowerCase().charAt(0)}function qe(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}function Ke(e){return e?e.toLowerCase().replace("_","-"):e}function Ze(e){for(var t,n,a,i,r=0;r0;){if(a=Xe(i.slice(0,t).join("-")))return a;if(n&&n.length>=t&&L(i,n,!0)>=t-1)break;t--}r++}return null}function Xe(t){var a=null;if(!xi[t]&&"undefined"!=typeof e&&e&&e.exports)try{a=bi._abbr,n(360)("./"+t),Qe(a)}catch(i){}return xi[t]}function Qe(e,t){var n;return e&&(n=p(t)?nt(e):et(e,t),n&&(bi=n)),bi._abbr}function et(e,t){if(null!==t){var n=Yi;return t.abbr=e,null!=xi[e]?(x("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=xi[e]._config):null!=t.parentLocale&&(null!=xi[t.parentLocale]?n=xi[t.parentLocale]._config:x("parentLocaleUndefined","specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")),xi[e]=new S(T(n,t)),Qe(e),xi[e]}return delete xi[e],null}function tt(e,t){if(null!=t){var n,a=Yi;null!=xi[e]&&(a=xi[e]._config),t=T(a,t),n=new S(t),n.parentLocale=xi[e],xi[e]=n,Qe(e)}else null!=xi[e]&&(null!=xi[e].parentLocale?xi[e]=xi[e].parentLocale:null!=xi[e]&&delete xi[e]);return xi[e]}function nt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return bi;if(!i(e)){if(t=Xe(e))return t;e=[e]}return Ze(e)}function at(){return Ma(xi)}function it(e){var t,n=e._a;return n&&_(e).overflow===-2&&(t=n[ei]<0||n[ei]>11?ei:n[ti]<1||n[ti]>re(n[Qa],n[ei])?ti:n[ni]<0||n[ni]>24||24===n[ni]&&(0!==n[ai]||0!==n[ii]||0!==n[ri])?ni:n[ai]<0||n[ai]>59?ai:n[ii]<0||n[ii]>59?ii:n[ri]<0||n[ri]>999?ri:-1,_(e)._overflowDayOfYear&&(tti)&&(t=ti),_(e)._overflowWeeks&&t===-1&&(t=oi),_(e)._overflowWeekday&&t===-1&&(t=si),_(e).overflow=t),e}function rt(e){var t,n,a,i,r,o,s=e._i,d=wi.exec(s)||Di.exec(s);if(d){for(_(e).iso=!0,t=0,n=Si.length;tpe(i)&&(_(e)._overflowDayOfYear=!0),n=Me(i,0,e._dayOfYear),e._a[ei]=n.getUTCMonth(),e._a[ti]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=r[t]=a[t];for(;t<7;t++)e._a[t]=r[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ni]&&0===e._a[ai]&&0===e._a[ii]&&0===e._a[ri]&&(e._nextDay=!0,e._a[ni]=0),e._d=(e._useUTC?Me:ve).apply(null,r),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ni]=24)}}function ut(e){var t,n,a,i,r,o,s,d;t=e._w,null!=t.GG||null!=t.W||null!=t.E?(r=1,o=4,n=st(t.GG,e._a[Qa],ke(vt(),1,4).year),a=st(t.W,1),i=st(t.E,1),(i<1||i>7)&&(d=!0)):(r=e._locale._week.dow,o=e._locale._week.doy,n=st(t.gg,e._a[Qa],ke(vt(),r,o).year),a=st(t.w,1),null!=t.d?(i=t.d,(i<0||i>6)&&(d=!0)):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(d=!0)):i=r),a<1||a>Ye(n,r,o)?_(e)._overflowWeeks=!0:null!=d?_(e)._overflowWeekday=!0:(s=Le(n,a,i,r,o),e._a[Qa]=s.year,e._dayOfYear=s.dayOfYear)}function ct(e){if(e._f===t.ISO_8601)return void rt(e);e._a=[],_(e).empty=!0;var n,a,i,r,o,s=""+e._i,d=s.length,l=0;for(i=Z(e._f,e._locale).match(ja)||[],n=0;n0&&_(e).unusedInput.push(o),s=s.slice(s.indexOf(a)+a.length),l+=a.length),Ca[r]?(a?_(e).empty=!1:_(e).unusedTokens.push(r),ie(r,a,e)):e._strict&&!a&&_(e).unusedTokens.push(r);_(e).charsLeftOver=d-l,s.length>0&&_(e).unusedInput.push(s),e._a[ni]<=12&&_(e).bigHour===!0&&e._a[ni]>0&&(_(e).bigHour=void 0),_(e).parsedDateParts=e._a.slice(0),_(e).meridiem=e._meridiem,e._a[ni]=ht(e._locale,e._a[ni],e._meridiem),lt(e),it(e)}function ht(e,t,n){var a;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?(a=e.isPM(n),a&&t<12&&(t+=12),a||12!==t||(t=0),t):t}function _t(e){var t,n,a,i,r;if(0===e._f.length)return _(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ot(){if(!p(this._isDSTShifted))return this._isDSTShifted;var e={};if(g(e,this),e=pt(e),e._a){var t=e._isUTC?c(e._a):vt(e._a);this._isDSTShifted=this.isValid()&&L(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Wt(){return!!this.isValid()&&!this._isUTC}function It(){return!!this.isValid()&&this._isUTC}function Et(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Rt(e,t){var n,a,i,r=e,o=null;return Yt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:"number"==typeof e?(r={},t?r[t]=e:r.milliseconds=e):(o=Oi.exec(e))?(n="-"===o[1]?-1:1,r={y:0,d:b(o[ti])*n,h:b(o[ni])*n,m:b(o[ai])*n,s:b(o[ii])*n,ms:b(o[ri])*n}):(o=Wi.exec(e))?(n="-"===o[1]?-1:1,r={y:zt(o[2],n),M:zt(o[3],n),w:zt(o[4],n),d:zt(o[5],n),h:zt(o[6],n),m:zt(o[7],n),s:zt(o[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=Vt(vt(r.from),vt(r.to)),r={},r.ms=i.milliseconds,r.M=i.months),a=new kt(r),Yt(e)&&l(e,"_locale")&&(a._locale=e._locale),a}function zt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Nt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Vt(e,t){var n;return e.isValid()&&t.isValid()?(t=Dt(t,e),e.isBefore(t)?n=Nt(e,t):(n=Nt(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Bt(e){return e<0?Math.round(-1*e)*-1:Math.round(e)}function $t(e,t){return function(n,a){var i,r;return null===a||isNaN(+a)||(x(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=a,a=r),n="string"==typeof n?+n:n,i=Rt(n,a),Jt(this,i,e),this}}function Jt(e,n,a,i){var r=n._milliseconds,o=Bt(n._days),s=Bt(n._months);e.isValid()&&(i=null==i||i,r&&e._d.setTime(e._d.valueOf()+r*a),o&&V(e,"Date",N(e,"Date")+o*a),s&&ue(e,N(e,"Month")+s*a),i&&t.updateOffset(e,o||s))}function Ut(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"}function Gt(e,n){var a=e||vt(),i=Dt(a,this).startOf("day"),r=t.calendarFormat(this,i)||"sameElse",o=n&&(w(n[r])?n[r].call(this,a):n[r]);return this.format(o||this.localeData().calendar(r,this,vt(a)))}function qt(){return new y(this)}function Kt(e,t){var n=v(e)?e:vt(e);return!(!this.isValid()||!n.isValid())&&(t=W(p(t)?"millisecond":t),"millisecond"===t?this.valueOf()>n.valueOf():n.valueOf()r&&(t=r),Hn.call(this,e,t,n,a,i))}function Hn(e,t,n,a,i){var r=Le(e,t,n,a,i),o=Me(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}function Cn(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}function Pn(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function Fn(e,t){t[ri]=b(1e3*("0."+e))}function On(){return this._isUTC?"UTC":""}function Wn(){return this._isUTC?"Coordinated Universal Time":""}function In(e){return vt(1e3*e)}function En(){return vt.apply(null,arguments).parseZone()}function Rn(e){return e}function zn(e,t,n,a){var i=nt(),r=c().set(a,t);return i[n](r,e)}function Nn(e,t,n){if("number"==typeof e&&(t=e,e=void 0),e=e||"",null!=t)return zn(e,t,n,"month");var a,i=[];for(a=0;a<12;a++)i[a]=zn(e,a,n,"month");return i}function Vn(e,t,n,a){"boolean"==typeof e?("number"==typeof t&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,"number"==typeof t&&(n=t,t=void 0),t=t||"");var i=nt(),r=e?i._week.dow:0;if(null!=n)return zn(t,(n+r)%7,a,"day");var o,s=[];for(o=0;o<7;o++)s[o]=zn(t,(o+r)%7,a,"day"); -return s}function Bn(e,t){return Nn(e,t,"months")}function $n(e,t){return Nn(e,t,"monthsShort")}function Jn(e,t,n){return Vn(e,t,n,"weekdays")}function Un(e,t,n){return Vn(e,t,n,"weekdaysShort")}function Gn(e,t,n){return Vn(e,t,n,"weekdaysMin")}function qn(){var e=this._data;return this._milliseconds=qi(this._milliseconds),this._days=qi(this._days),this._months=qi(this._months),e.milliseconds=qi(e.milliseconds),e.seconds=qi(e.seconds),e.minutes=qi(e.minutes),e.hours=qi(e.hours),e.months=qi(e.months),e.years=qi(e.years),this}function Kn(e,t,n,a){var i=Rt(t,n);return e._milliseconds+=a*i._milliseconds,e._days+=a*i._days,e._months+=a*i._months,e._bubble()}function Zn(e,t){return Kn(this,e,t,1)}function Xn(e,t){return Kn(this,e,t,-1)}function Qn(e){return e<0?Math.floor(e):Math.ceil(e)}function ea(){var e,t,n,a,i,r=this._milliseconds,o=this._days,s=this._months,d=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*Qn(na(s)+o),o=0,s=0),d.milliseconds=r%1e3,e=M(r/1e3),d.seconds=e%60,t=M(e/60),d.minutes=t%60,n=M(t/60),d.hours=n%24,o+=M(n/24),i=M(ta(o)),s+=i,o-=Qn(na(i)),a=M(s/12),s%=12,d.days=o,d.months=s,d.years=a,this}function ta(e){return 4800*e/146097}function na(e){return 146097*e/4800}function aa(e){var t,n,a=this._milliseconds;if(e=W(e),"month"===e||"year"===e)return t=this._days+a/864e5,n=this._months+ta(t),"month"===e?n:n/12;switch(t=this._days+Math.round(na(this._months)),e){case"week":return t/7+a/6048e5;case"day":return t+a/864e5;case"hour":return 24*t+a/36e5;case"minute":return 1440*t+a/6e4;case"second":return 86400*t+a/1e3;case"millisecond":return Math.floor(864e5*t)+a;default:throw new Error("Unknown unit "+e)}}function ia(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*b(this._months/12)}function ra(e){return function(){return this.as(e)}}function oa(e){return e=W(e),this[e+"s"]()}function sa(e){return function(){return this._data[e]}}function da(){return M(this.days()/7)}function la(e,t,n,a,i){return i.relativeTime(t||1,!!n,e,a)}function ua(e,t,n){var a=Rt(e).abs(),i=cr(a.as("s")),r=cr(a.as("m")),o=cr(a.as("h")),s=cr(a.as("d")),d=cr(a.as("M")),l=cr(a.as("y")),u=i0,u[4]=n,la.apply(null,u)}function ca(e){return void 0===e?cr:"function"==typeof e&&(cr=e,!0)}function ha(e,t){return void 0!==hr[e]&&(void 0===t?hr[e]:(hr[e]=t,!0))}function _a(e){var t=this.localeData(),n=ua(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)}function fa(){var e,t,n,a=_r(this._milliseconds)/1e3,i=_r(this._days),r=_r(this._months);e=M(a/60),t=M(e/60),a%=60,e%=60,n=M(r/12),r%=12;var o=n,s=r,d=i,l=t,u=e,c=a,h=this.asSeconds();return h?(h<0?"-":"")+"P"+(o?o+"Y":"")+(s?s+"M":"")+(d?d+"D":"")+(l||u||c?"T":"")+(l?l+"H":"")+(u?u+"M":"")+(c?c+"S":""):"P0D"}var ma,pa;pa=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,a=0;a68?1900:2e3)};var _i=z("FullYear",!0);U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),O("week","w"),O("isoWeek","W"),E("week",5),E("isoWeek",5),X("w",Ea),X("ww",Ea,Fa),X("W",Ea),X("WW",Ea,Fa),ae(["w","ww","W","WW"],function(e,t,n,a){t[a.substr(0,1)]=b(e)});var fi={dow:0,doy:6};U("d",0,"do","day"),U("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),U("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),U("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),O("day","d"),O("weekday","e"),O("isoWeekday","E"),E("day",11),E("weekday",11),E("isoWeekday",11),X("d",Ea),X("e",Ea),X("E",Ea),X("dd",function(e,t){return t.weekdaysMinRegex(e)}),X("ddd",function(e,t){return t.weekdaysShortRegex(e)}),X("dddd",function(e,t){return t.weekdaysRegex(e)}),ae(["dd","ddd","dddd"],function(e,t,n,a){var i=n._locale.weekdaysParse(e,a,n._strict);null!=i?t.d=i:_(n).invalidWeekday=e}),ae(["d","e","E"],function(e,t,n,a){t[a]=b(e)});var mi="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),pi="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),gi="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),yi=Ka,vi=Ka,Mi=Ka;U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Be),U("k",["kk",2],0,$e),U("hmm",0,0,function(){return""+Be.apply(this)+J(this.minutes(),2)}),U("hmmss",0,0,function(){return""+Be.apply(this)+J(this.minutes(),2)+J(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+J(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+J(this.minutes(),2)+J(this.seconds(),2)}),Je("a",!0),Je("A",!1),O("hour","h"),E("hour",13),X("a",Ue),X("A",Ue),X("H",Ea),X("h",Ea),X("HH",Ea,Fa),X("hh",Ea,Fa),X("hmm",Ra),X("hmmss",za),X("Hmm",Ra),X("Hmmss",za),ne(["H","HH"],ni),ne(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ne(["h","hh"],function(e,t,n){t[ni]=b(e),_(n).bigHour=!0}),ne("hmm",function(e,t,n){var a=e.length-2;t[ni]=b(e.substr(0,a)),t[ai]=b(e.substr(a)),_(n).bigHour=!0}),ne("hmmss",function(e,t,n){var a=e.length-4,i=e.length-2;t[ni]=b(e.substr(0,a)),t[ai]=b(e.substr(a,2)),t[ii]=b(e.substr(i)),_(n).bigHour=!0}),ne("Hmm",function(e,t,n){var a=e.length-2;t[ni]=b(e.substr(0,a)),t[ai]=b(e.substr(a))}),ne("Hmmss",function(e,t,n){var a=e.length-4,i=e.length-2;t[ni]=b(e.substr(0,a)),t[ai]=b(e.substr(a,2)),t[ii]=b(e.substr(i))});var bi,Li=/[ap]\.?m?\.?/i,ki=z("Hours",!0),Yi={calendar:La,longDateFormat:ka,invalidDate:Ya,ordinal:xa,ordinalParse:wa,relativeTime:Da,months:li,monthsShort:ui,week:fi,weekdays:mi,weekdaysMin:gi,weekdaysShort:pi,meridiemParse:Li},xi={},wi=/^\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)?)?/,Di=/^\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)?)?/,Ti=/Z|[+-]\d\d(?::?\d\d)?/,Si=[["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}/]],ji=[["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/]],Ai=/^\/?Date\((\-?\d+)/i;t.createFromInputFallback=Y("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),t.ISO_8601=function(){};var Hi=Y("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=vt.apply(null,arguments);return this.isValid()&&e.isValid()?ethis?this:e:m()}),Pi=function(){return Date.now?Date.now():+new Date};xt("Z",":"),xt("ZZ",""),X("Z",Ga),X("ZZ",Ga),ne(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=wt(Ga,e)});var Fi=/([\+\-]|\d\d)/gi;t.updateOffset=function(){};var Oi=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,Wi=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Rt.fn=kt.prototype;var Ii=$t(1,"add"),Ei=$t(-1,"subtract");t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ri=Y("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),wn("gggg","weekYear"),wn("ggggg","weekYear"),wn("GGGG","isoWeekYear"),wn("GGGGG","isoWeekYear"),O("weekYear","gg"),O("isoWeekYear","GG"),E("weekYear",1),E("isoWeekYear",1),X("G",Ja),X("g",Ja),X("GG",Ea,Fa),X("gg",Ea,Fa),X("GGGG",Va,Wa),X("gggg",Va,Wa),X("GGGGG",Ba,Ia),X("ggggg",Ba,Ia),ae(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,a){t[a.substr(0,2)]=b(e)}),ae(["gg","GG"],function(e,n,a,i){n[i]=t.parseTwoDigitYear(e)}),U("Q",0,"Qo","quarter"),O("quarter","Q"),E("quarter",7),X("Q",Pa),ne("Q",function(e,t){t[ei]=3*(b(e)-1)}),U("D",["DD",2],"Do","date"),O("date","D"),E("date",9),X("D",Ea),X("DD",Ea,Fa),X("Do",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),ne(["D","DD"],ti),ne("Do",function(e,t){t[ti]=b(e.match(Ea)[0],10)});var zi=z("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),O("dayOfYear","DDD"),E("dayOfYear",4),X("DDD",Na),X("DDDD",Oa),ne(["DDD","DDDD"],function(e,t,n){n._dayOfYear=b(e)}),U("m",["mm",2],0,"minute"),O("minute","m"),E("minute",14),X("m",Ea),X("mm",Ea,Fa),ne(["m","mm"],ai);var Ni=z("Minutes",!1);U("s",["ss",2],0,"second"),O("second","s"),E("second",15),X("s",Ea),X("ss",Ea,Fa),ne(["s","ss"],ii);var Vi=z("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),O("millisecond","ms"),E("millisecond",16),X("S",Na,Pa),X("SS",Na,Fa),X("SSS",Na,Oa);var Bi;for(Bi="SSSS";Bi.length<=9;Bi+="S")X(Bi,$a);for(Bi="S";Bi.length<=9;Bi+="S")ne(Bi,Fn);var $i=z("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var Ji=y.prototype;Ji.add=Ii,Ji.calendar=Gt,Ji.clone=qt,Ji.diff=nn,Ji.endOf=mn,Ji.format=sn,Ji.from=dn,Ji.fromNow=ln,Ji.to=un,Ji.toNow=cn,Ji.get=B,Ji.invalidAt=Yn,Ji.isAfter=Kt,Ji.isBefore=Zt,Ji.isBetween=Xt,Ji.isSame=Qt,Ji.isSameOrAfter=en,Ji.isSameOrBefore=tn,Ji.isValid=Ln,Ji.lang=Ri,Ji.locale=hn,Ji.localeData=_n,Ji.max=Ci,Ji.min=Hi,Ji.parsingFlags=kn,Ji.set=$,Ji.startOf=fn,Ji.subtract=Ei,Ji.toArray=vn,Ji.toObject=Mn,Ji.toDate=yn,Ji.toISOString=on,Ji.toJSON=bn,Ji.toString=rn,Ji.unix=gn,Ji.valueOf=pn,Ji.creationData=xn,Ji.year=_i,Ji.isLeapYear=ye,Ji.weekYear=Dn,Ji.isoWeekYear=Tn,Ji.quarter=Ji.quarters=Cn,Ji.month=ce,Ji.daysInMonth=he,Ji.week=Ji.weeks=Te,Ji.isoWeek=Ji.isoWeeks=Se,Ji.weeksInYear=jn,Ji.isoWeeksInYear=Sn,Ji.date=zi,Ji.day=Ji.days=We,Ji.weekday=Ie,Ji.isoWeekday=Ee,Ji.dayOfYear=Pn,Ji.hour=Ji.hours=ki,Ji.minute=Ji.minutes=Ni,Ji.second=Ji.seconds=Vi,Ji.millisecond=Ji.milliseconds=$i,Ji.utcOffset=St,Ji.utc=At,Ji.local=Ht,Ji.parseZone=Ct,Ji.hasAlignedHourOffset=Pt,Ji.isDST=Ft,Ji.isLocal=Wt,Ji.isUtcOffset=It,Ji.isUtc=Et,Ji.isUTC=Et,Ji.zoneAbbr=On,Ji.zoneName=Wn,Ji.dates=Y("dates accessor is deprecated. Use date instead.",zi),Ji.months=Y("months accessor is deprecated. Use month instead",ce),Ji.years=Y("years accessor is deprecated. Use year instead",_i),Ji.zone=Y("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",jt),Ji.isDSTShifted=Y("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ot);var Ui=Ji,Gi=S.prototype;Gi.calendar=j,Gi.longDateFormat=A,Gi.invalidDate=H,Gi.ordinal=C,Gi.preparse=Rn,Gi.postformat=Rn,Gi.relativeTime=P,Gi.pastFuture=F,Gi.set=D,Gi.months=oe,Gi.monthsShort=se,Gi.monthsParse=le,Gi.monthsRegex=fe,Gi.monthsShortRegex=_e,Gi.week=xe,Gi.firstDayOfYear=De,Gi.firstDayOfWeek=we,Gi.weekdays=He,Gi.weekdaysMin=Pe,Gi.weekdaysShort=Ce,Gi.weekdaysParse=Oe,Gi.weekdaysRegex=Re,Gi.weekdaysShortRegex=ze,Gi.weekdaysMinRegex=Ne,Gi.isPM=Ge,Gi.meridiem=qe,Qe("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=1===b(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+n}}),t.lang=Y("moment.lang is deprecated. Use moment.locale instead.",Qe),t.langData=Y("moment.langData is deprecated. Use moment.localeData instead.",nt);var qi=Math.abs,Ki=ra("ms"),Zi=ra("s"),Xi=ra("m"),Qi=ra("h"),er=ra("d"),tr=ra("w"),nr=ra("M"),ar=ra("y"),ir=sa("milliseconds"),rr=sa("seconds"),or=sa("minutes"),sr=sa("hours"),dr=sa("days"),lr=sa("months"),ur=sa("years"),cr=Math.round,hr={s:45,m:45,h:22,d:26,M:11},_r=Math.abs,fr=kt.prototype;fr.abs=qn,fr.add=Zn,fr.subtract=Xn,fr.as=aa,fr.asMilliseconds=Ki,fr.asSeconds=Zi,fr.asMinutes=Xi,fr.asHours=Qi,fr.asDays=er,fr.asWeeks=tr,fr.asMonths=nr,fr.asYears=ar,fr.valueOf=ia,fr._bubble=ea,fr.get=oa,fr.milliseconds=ir,fr.seconds=rr,fr.minutes=or,fr.hours=sr,fr.days=dr,fr.weeks=da,fr.months=lr,fr.years=ur,fr.humanize=_a,fr.toISOString=fa,fr.toString=fa,fr.toJSON=fa,fr.locale=hn,fr.localeData=_n,fr.toIsoString=Y("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",fa),fr.lang=Ri,U("X",0,0,"unix"),U("x",0,0,"valueOf"),X("x",Ja),X("X",qa),ne("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ne("x",function(e,t,n){n._d=new Date(b(e))}),t.version="2.14.1",a(vt),t.fn=Ui,t.min=bt,t.max=Lt,t.now=Pi,t.utc=c,t.unix=In,t.months=Bn,t.isDate=s,t.locale=Qe,t.invalid=m,t.duration=Rt,t.isMoment=v,t.weekdays=Jn,t.parseZone=En,t.localeData=nt,t.isDuration=Yt,t.monthsShort=$n,t.weekdaysMin=Gn,t.defineLocale=et,t.updateLocale=tt,t.locales=at,t.weekdaysShort=Un,t.normalizeUnits=W,t.relativeTimeRounding=ca,t.relativeTimeThreshold=ha,t.calendarFormat=Ut,t.prototype=Ui;var mr=t;return mr})}).call(t,n(48)(e))},function(e,t,n){var a=n(68),i="object"==typeof self&&self&&self.Object===Object&&self,r=a||i||Function("return this")();e.exports=r},function(e,t){var n=Array.isArray;e.exports=n},function(e,t){function n(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}e.exports=n},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){return(0,o["default"])(e,t)}Object.defineProperty(t,"__esModule",{value:!0}),t.mergeOptions=i;var r=n(338),o=a(r)},function(e,t,n){var a=n(212)();n(211)(a),n(207)(a),n(210)(a),n(206)(a),n(208)(a),n(209)(a),n(213)(a),n(217)(a),n(215)(a),n(216)(a),n(218)(a),n(214)(a),n(219)(a),n(220)(a),n(221)(a),n(222)(a),n(223)(a),n(226)(a),n(224)(a),n(225)(a),n(227)(a),n(228)(a),n(229)(a),n(200)(a),n(201)(a),n(202)(a),n(203)(a),n(204)(a),n(205)(a),n(193)(a),n(194)(a),n(195)(a),n(196)(a),n(197)(a),n(198)(a),n(199)(a),window.Chart=e.exports=a},function(e,t,n){function a(e,t){var n=r(e,t);return i(n)?n:void 0}var i=n(254),r=n(288);e.exports=a},function(e,t,n){(function(t){/*! - * Vue.js v1.0.26 +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.VueChartJs=t():e.VueChartJs=t()}(this,function(){return function(e){function t(a){if(n[a])return n[a].exports;var i=n[a]={exports:{},id:a,loaded:!1};return e[a].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="/",t(0)}([function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}var i=n(206),r=a(i),o=n(208),s=a(o),u=n(209),d=a(u),l=n(210),c=a(l),h=n(211),_=a(h),f=n(212),m=a(f),p=n(207),g=a(p),v={Bar:r.default,Doughnut:s.default,Line:d.default,Pie:c.default,PolarArea:_.default,Radar:m.default,Bubble:g.default};e.exports=v},function(e,t,n){(function(e){!function(t,n){e.exports=n()}(this,function(){"use strict";function t(){return ga.apply(null,arguments)}function a(e){ga=e}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function r(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function o(e){var t;for(t in e)return!1;return!0}function s(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,a=[];for(n=0;n0)for(n in Ma)a=Ma[n],i=t[a],g(i)||(e[a]=i);return e}function y(e){v(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),ba===!1&&(ba=!0,t.updateOffset(this),ba=!1)}function M(e){return e instanceof y||null!=e&&null!=e._isAMomentObject}function b(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function L(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=b(t)),n}function k(e,t,n){var a,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),o=0;for(a=0;a0?"future":"past"];return D(n)?n(t):n.replace(/%s/i,t)}function W(e,t){var n=e.toLowerCase();Aa[n]=Aa[n+"s"]=Aa[t]=e}function I(e){return"string"==typeof e?Aa[e]||Aa[e.toLowerCase()]:void 0}function E(e){var t,n,a={};for(n in e)l(e,n)&&(t=I(n),t&&(a[t]=e[n]));return a}function z(e,t){Ca[e]=t}function R(e){var t=[];for(var n in e)t.push({unit:n,priority:Ca[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}function N(e,n){return function(a){return null!=a?(B(this,e,a),t.updateOffset(this,n),this):V(this,e)}}function V(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function B(e,t,n){e.isValid()&&e._d["set"+(e._isUTC?"UTC":"")+t](n)}function $(e){return e=I(e),D(this[e])?this[e]():this}function J(e,t){if("object"==typeof e){e=E(e);for(var n=R(e),a=0;a=0;return(r?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+a}function q(e,t,n,a){var i=a;"string"==typeof a&&(i=function(){return this[a]()}),e&&(Wa[e]=i),t&&(Wa[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(Wa[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function G(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function K(e){var t,n,a=e.match(Pa);for(t=0,n=a.length;t=0&&Oa.test(e);)e=e.replace(Oa,n),Oa.lastIndex=0,a-=1;return e}function X(e,t,n){ti[e]=D(t)?t:function(e,a){return e&&n?n:t}}function ee(e,t){return l(ti,e)?ti[e](t._strict,t._locale):new RegExp(te(e))}function te(e){return ne(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,a,i){return t||n||a||i}))}function ne(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ae(e,t){var n,a=t;for("string"==typeof e&&(e=[e]),s(t)&&(a=function(e,n){n[t]=L(e)}),n=0;n=0&&isFinite(s.getFullYear())&&s.setFullYear(e),s}function be(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Le(e,t,n){var a=7+t-n,i=(7+be(e,0,a).getUTCDay()-t)%7;return-i+a-1}function ke(e,t,n,a,i){var r,o,s=(7+n-a)%7,u=Le(e,a,i),d=1+7*(t-1)+s+u;return d<=0?(r=e-1,o=ge(r)+d):d>ge(e)?(r=e+1,o=d-ge(e)):(r=e,o=d),{year:r,dayOfYear:o}}function Ye(e,t,n){var a,i,r=Le(e.year(),t,n),o=Math.floor((e.dayOfYear()-r-1)/7)+1;return o<1?(i=e.year()-1,a=o+xe(i,t,n)):o>xe(e.year(),t,n)?(a=o-xe(e.year(),t,n),i=e.year()+1):(i=e.year(),a=o),{week:a,year:i}}function xe(e,t,n){var a=Le(e,t,n),i=Le(e+1,t,n);return(ge(e)-a+i)/7}function we(e){return Ye(e,this._week.dow,this._week.doy).week}function De(){return this._week.dow}function Te(){return this._week.doy}function Se(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function je(e){var t=Ye(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function He(e,t){return"string"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"==typeof e?e:null):parseInt(e,10)}function Ae(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Ce(e,t){return e?i(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:this._weekdays}function Pe(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Oe(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Fe(e,t,n){var a,i,r,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)r=h([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?(i=hi.call(this._weekdaysParse,o),i!==-1?i:null):"ddd"===t?(i=hi.call(this._shortWeekdaysParse,o),i!==-1?i:null):(i=hi.call(this._minWeekdaysParse,o),i!==-1?i:null):"dddd"===t?(i=hi.call(this._weekdaysParse,o),i!==-1?i:(i=hi.call(this._shortWeekdaysParse,o),i!==-1?i:(i=hi.call(this._minWeekdaysParse,o),i!==-1?i:null))):"ddd"===t?(i=hi.call(this._shortWeekdaysParse,o),i!==-1?i:(i=hi.call(this._weekdaysParse,o),i!==-1?i:(i=hi.call(this._minWeekdaysParse,o),i!==-1?i:null))):(i=hi.call(this._minWeekdaysParse,o),i!==-1?i:(i=hi.call(this._weekdaysParse,o),i!==-1?i:(i=hi.call(this._shortWeekdaysParse,o),i!==-1?i:null)))}function We(e,t,n){var a,i,r;if(this._weekdaysParseExact)return Fe.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(i=h([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[a]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[a]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[a].test(e))return a;if(n&&"ddd"===t&&this._shortWeekdaysParse[a].test(e))return a;if(n&&"dd"===t&&this._minWeekdaysParse[a].test(e))return a;if(!n&&this._weekdaysParse[a].test(e))return a}}function Ie(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=He(e,this.localeData()),this.add(e-t,"d")):t}function Ee(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function ze(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Ae(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function Re(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=ki),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Ne(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Yi),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Ve(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=xi),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Be(){function e(e,t){return t.length-e.length}var t,n,a,i,r,o=[],s=[],u=[],d=[];for(t=0;t<7;t++)n=h([2e3,1]).day(t),a=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),o.push(a),s.push(i),u.push(r),d.push(a),d.push(i),d.push(r);for(o.sort(e),s.sort(e),u.sort(e),d.sort(e),t=0;t<7;t++)s[t]=ne(s[t]),u[t]=ne(u[t]),d[t]=ne(d[t]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function $e(){return this.hours()%12||12}function Je(){return this.hours()||24}function Ue(e,t){q(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function qe(e,t){return t._meridiemParse}function Ge(e){return"p"===(e+"").toLowerCase().charAt(0)}function Ke(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}function Ze(e){return e?e.toLowerCase().replace("_","-"):e}function Qe(e){for(var t,n,a,i,r=0;r0;){if(a=Xe(i.slice(0,t).join("-")))return a;if(n&&n.length>=t&&k(i,n,!0)>=t-1)break;t--}r++}return null}function Xe(t){var a=null;if(!ji[t]&&"undefined"!=typeof e&&e&&e.exports)try{a=wi._abbr,n(386)("./"+t),et(a)}catch(e){}return ji[t]}function et(e,t){var n;return e&&(n=g(t)?at(e):tt(e,t),n&&(wi=n)),wi._abbr}function tt(e,t){if(null!==t){var n=Si;if(t.abbr=e,null!=ji[e])w("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=ji[e]._config;else if(null!=t.parentLocale){if(null==ji[t.parentLocale])return Hi[t.parentLocale]||(Hi[t.parentLocale]=[]),Hi[t.parentLocale].push({name:e,config:t}),null;n=ji[t.parentLocale]._config}return ji[e]=new j(S(n,t)),Hi[e]&&Hi[e].forEach(function(e){tt(e.name,e.config)}),et(e),ji[e]}return delete ji[e],null}function nt(e,t){if(null!=t){var n,a=Si;null!=ji[e]&&(a=ji[e]._config),t=S(a,t),n=new j(t),n.parentLocale=ji[e],ji[e]=n,et(e)}else null!=ji[e]&&(null!=ji[e].parentLocale?ji[e]=ji[e].parentLocale:null!=ji[e]&&delete ji[e]);return ji[e]}function at(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return wi;if(!i(e)){if(t=Xe(e))return t;e=[e]}return Qe(e)}function it(){return xa(ji)}function rt(e){var t,n=e._a;return n&&f(e).overflow===-2&&(t=n[ii]<0||n[ii]>11?ii:n[ri]<1||n[ri]>oe(n[ai],n[ii])?ri:n[oi]<0||n[oi]>24||24===n[oi]&&(0!==n[si]||0!==n[ui]||0!==n[di])?oi:n[si]<0||n[si]>59?si:n[ui]<0||n[ui]>59?ui:n[di]<0||n[di]>999?di:-1,f(e)._overflowDayOfYear&&(tri)&&(t=ri),f(e)._overflowWeeks&&t===-1&&(t=li),f(e)._overflowWeekday&&t===-1&&(t=ci),f(e).overflow=t),e}function ot(e){var t,n,a,i,r,o,s=e._i,u=Ai.exec(s)||Ci.exec(s);if(u){for(f(e).iso=!0,t=0,n=Oi.length;tge(i)&&(f(e)._overflowDayOfYear=!0),n=be(i,0,e._dayOfYear),e._a[ii]=n.getUTCMonth(),e._a[ri]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=r[t]=a[t];for(;t<7;t++)e._a[t]=r[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[oi]&&0===e._a[si]&&0===e._a[ui]&&0===e._a[di]&&(e._nextDay=!0,e._a[oi]=0),e._d=(e._useUTC?be:Me).apply(null,r),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[oi]=24)}}function ct(e){var t,n,a,i,r,o,s,u;if(t=e._w,null!=t.GG||null!=t.W||null!=t.E)r=1,o=4,n=ut(t.GG,e._a[ai],Ye(Mt(),1,4).year),a=ut(t.W,1),i=ut(t.E,1),(i<1||i>7)&&(u=!0);else{r=e._locale._week.dow,o=e._locale._week.doy;var d=Ye(Mt(),r,o);n=ut(t.gg,e._a[ai],d.year),a=ut(t.w,d.week),null!=t.d?(i=t.d,(i<0||i>6)&&(u=!0)):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(u=!0)):i=r}a<1||a>xe(n,r,o)?f(e)._overflowWeeks=!0:null!=u?f(e)._overflowWeekday=!0:(s=ke(n,a,i,r,o),e._a[ai]=s.year,e._dayOfYear=s.dayOfYear)}function ht(e){if(e._f===t.ISO_8601)return void ot(e);e._a=[],f(e).empty=!0;var n,a,i,r,o,s=""+e._i,u=s.length,d=0;for(i=Q(e._f,e._locale).match(Pa)||[],n=0;n0&&f(e).unusedInput.push(o),s=s.slice(s.indexOf(a)+a.length),d+=a.length),Wa[r]?(a?f(e).empty=!1:f(e).unusedTokens.push(r),re(r,a,e)):e._strict&&!a&&f(e).unusedTokens.push(r);f(e).charsLeftOver=u-d,s.length>0&&f(e).unusedInput.push(s),e._a[oi]<=12&&f(e).bigHour===!0&&e._a[oi]>0&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[oi]=_t(e._locale,e._a[oi],e._meridiem),lt(e),rt(e)}function _t(e,t,n){var a;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?(a=e.isPM(n),a&&t<12&&(t+=12),a||12!==t||(t=0),t):t}function ft(e){var t,n,a,i,r;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function It(){if(!g(this._isDSTShifted))return this._isDSTShifted;var e={};if(v(e,this),e=gt(e),e._a){var t=e._isUTC?h(e._a):Mt(e._a);this._isDSTShifted=this.isValid()&&k(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Et(){return!!this.isValid()&&!this._isUTC}function zt(){return!!this.isValid()&&this._isUTC}function Rt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Nt(e,t){var n,a,i,r=e,o=null;return xt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:s(e)?(r={},t?r[t]=e:r.milliseconds=e):(o=Ni.exec(e))?(n="-"===o[1]?-1:1,r={y:0,d:L(o[ri])*n,h:L(o[oi])*n,m:L(o[si])*n,s:L(o[ui])*n,ms:L(wt(1e3*o[di]))*n}):(o=Vi.exec(e))?(n="-"===o[1]?-1:1,r={y:Vt(o[2],n),M:Vt(o[3],n),w:Vt(o[4],n),d:Vt(o[5],n),h:Vt(o[6],n),m:Vt(o[7],n),s:Vt(o[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=$t(Mt(r.from),Mt(r.to)),r={},r.ms=i.milliseconds,r.M=i.months),a=new Yt(r),xt(e)&&l(e,"_locale")&&(a._locale=e._locale),a}function Vt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Bt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function $t(e,t){var n;return e.isValid()&&t.isValid()?(t=St(t,e),e.isBefore(t)?n=Bt(e,t):(n=Bt(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Jt(e,t){return function(n,a){var i,r;return null===a||isNaN(+a)||(w(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=a,a=r),n="string"==typeof n?+n:n,i=Nt(n,a),Ut(this,i,e),this}}function Ut(e,n,a,i){var r=n._milliseconds,o=wt(n._days),s=wt(n._months);e.isValid()&&(i=null==i||i,r&&e._d.setTime(e._d.valueOf()+r*a),o&&B(e,"Date",V(e,"Date")+o*a),s&&ce(e,V(e,"Month")+s*a),i&&t.updateOffset(e,o||s))}function qt(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"}function Gt(e,n){var a=e||Mt(),i=St(a,this).startOf("day"),r=t.calendarFormat(this,i)||"sameElse",o=n&&(D(n[r])?n[r].call(this,a):n[r]);return this.format(o||this.localeData().calendar(r,this,Mt(a)))}function Kt(){return new y(this)}function Zt(e,t){var n=M(e)?e:Mt(e);return!(!this.isValid()||!n.isValid())&&(t=I(g(t)?"millisecond":t),"millisecond"===t?this.valueOf()>n.valueOf():n.valueOf()r&&(t=r),Pn.call(this,e,t,n,a,i))}function Pn(e,t,n,a,i){var r=ke(e,t,n,a,i),o=be(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}function On(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3); +}function Fn(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function Wn(e,t){t[di]=L(1e3*("0."+e))}function In(){return this._isUTC?"UTC":""}function En(){return this._isUTC?"Coordinated Universal Time":""}function zn(e){return Mt(1e3*e)}function Rn(){return Mt.apply(null,arguments).parseZone()}function Nn(e){return e}function Vn(e,t,n,a){var i=at(),r=h().set(a,t);return i[n](r,e)}function Bn(e,t,n){if(s(e)&&(t=e,e=void 0),e=e||"",null!=t)return Vn(e,t,n,"month");var a,i=[];for(a=0;a<12;a++)i[a]=Vn(e,a,n,"month");return i}function $n(e,t,n,a){"boolean"==typeof e?(s(t)&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,s(t)&&(n=t,t=void 0),t=t||"");var i=at(),r=e?i._week.dow:0;if(null!=n)return Vn(t,(n+r)%7,a,"day");var o,u=[];for(o=0;o<7;o++)u[o]=Vn(t,(o+r)%7,a,"day");return u}function Jn(e,t){return Bn(e,t,"months")}function Un(e,t){return Bn(e,t,"monthsShort")}function qn(e,t,n){return $n(e,t,n,"weekdays")}function Gn(e,t,n){return $n(e,t,n,"weekdaysShort")}function Kn(e,t,n){return $n(e,t,n,"weekdaysMin")}function Zn(){var e=this._data;return this._milliseconds=er(this._milliseconds),this._days=er(this._days),this._months=er(this._months),e.milliseconds=er(e.milliseconds),e.seconds=er(e.seconds),e.minutes=er(e.minutes),e.hours=er(e.hours),e.months=er(e.months),e.years=er(e.years),this}function Qn(e,t,n,a){var i=Nt(t,n);return e._milliseconds+=a*i._milliseconds,e._days+=a*i._days,e._months+=a*i._months,e._bubble()}function Xn(e,t){return Qn(this,e,t,1)}function ea(e,t){return Qn(this,e,t,-1)}function ta(e){return e<0?Math.floor(e):Math.ceil(e)}function na(){var e,t,n,a,i,r=this._milliseconds,o=this._days,s=this._months,u=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*ta(ia(s)+o),o=0,s=0),u.milliseconds=r%1e3,e=b(r/1e3),u.seconds=e%60,t=b(e/60),u.minutes=t%60,n=b(t/60),u.hours=n%24,o+=b(n/24),i=b(aa(o)),s+=i,o-=ta(ia(i)),a=b(s/12),s%=12,u.days=o,u.months=s,u.years=a,this}function aa(e){return 4800*e/146097}function ia(e){return 146097*e/4800}function ra(e){var t,n,a=this._milliseconds;if(e=I(e),"month"===e||"year"===e)return t=this._days+a/864e5,n=this._months+aa(t),"month"===e?n:n/12;switch(t=this._days+Math.round(ia(this._months)),e){case"week":return t/7+a/6048e5;case"day":return t+a/864e5;case"hour":return 24*t+a/36e5;case"minute":return 1440*t+a/6e4;case"second":return 86400*t+a/1e3;case"millisecond":return Math.floor(864e5*t)+a;default:throw new Error("Unknown unit "+e)}}function oa(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)}function sa(e){return function(){return this.as(e)}}function ua(e){return e=I(e),this[e+"s"]()}function da(e){return function(){return this._data[e]}}function la(){return b(this.days()/7)}function ca(e,t,n,a,i){return i.relativeTime(t||1,!!n,e,a)}function ha(e,t,n){var a=Nt(e).abs(),i=pr(a.as("s")),r=pr(a.as("m")),o=pr(a.as("h")),s=pr(a.as("d")),u=pr(a.as("M")),d=pr(a.as("y")),l=i0,l[4]=n,ca.apply(null,l)}function _a(e){return void 0===e?pr:"function"==typeof e&&(pr=e,!0)}function fa(e,t){return void 0!==gr[e]&&(void 0===t?gr[e]:(gr[e]=t,!0))}function ma(e){var t=this.localeData(),n=ha(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)}function pa(){var e,t,n,a=vr(this._milliseconds)/1e3,i=vr(this._days),r=vr(this._months);e=b(a/60),t=b(e/60),a%=60,e%=60,n=b(r/12),r%=12;var o=n,s=r,u=i,d=t,l=e,c=a,h=this.asSeconds();return h?(h<0?"-":"")+"P"+(o?o+"Y":"")+(s?s+"M":"")+(u?u+"D":"")+(d||l||c?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(c?c+"S":""):"P0D"}var ga,va;va=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,a=0;a68?1900:2e3)};var vi=N("FullYear",!0);q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),W("week","w"),W("isoWeek","W"),z("week",5),z("isoWeek",5),X("w",Va),X("ww",Va,Ea),X("W",Va),X("WW",Va,Ea),ie(["w","ww","W","WW"],function(e,t,n,a){t[a.substr(0,1)]=L(e)});var yi={dow:0,doy:6};q("d",0,"do","day"),q("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),q("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),q("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),W("day","d"),W("weekday","e"),W("isoWeekday","E"),z("day",11),z("weekday",11),z("isoWeekday",11),X("d",Va),X("e",Va),X("E",Va),X("dd",function(e,t){return t.weekdaysMinRegex(e)}),X("ddd",function(e,t){return t.weekdaysShortRegex(e)}),X("dddd",function(e,t){return t.weekdaysRegex(e)}),ie(["dd","ddd","dddd"],function(e,t,n,a){var i=n._locale.weekdaysParse(e,a,n._strict);null!=i?t.d=i:f(n).invalidWeekday=e}),ie(["d","e","E"],function(e,t,n,a){t[a]=L(e)});var Mi="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),bi="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Li="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ki=ei,Yi=ei,xi=ei;q("H",["HH",2],0,"hour"),q("h",["hh",2],0,$e),q("k",["kk",2],0,Je),q("hmm",0,0,function(){return""+$e.apply(this)+U(this.minutes(),2)}),q("hmmss",0,0,function(){return""+$e.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),q("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),q("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Ue("a",!0),Ue("A",!1),W("hour","h"),z("hour",13),X("a",qe),X("A",qe),X("H",Va),X("h",Va),X("HH",Va,Ea),X("hh",Va,Ea),X("hmm",Ba),X("hmmss",$a),X("Hmm",Ba),X("Hmmss",$a),ae(["H","HH"],oi),ae(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ae(["h","hh"],function(e,t,n){t[oi]=L(e),f(n).bigHour=!0}),ae("hmm",function(e,t,n){var a=e.length-2;t[oi]=L(e.substr(0,a)),t[si]=L(e.substr(a)),f(n).bigHour=!0}),ae("hmmss",function(e,t,n){var a=e.length-4,i=e.length-2;t[oi]=L(e.substr(0,a)),t[si]=L(e.substr(a,2)),t[ui]=L(e.substr(i)),f(n).bigHour=!0}),ae("Hmm",function(e,t,n){var a=e.length-2;t[oi]=L(e.substr(0,a)),t[si]=L(e.substr(a))}),ae("Hmmss",function(e,t,n){var a=e.length-4,i=e.length-2;t[oi]=L(e.substr(0,a)),t[si]=L(e.substr(a,2)),t[ui]=L(e.substr(i))});var wi,Di=/[ap]\.?m?\.?/i,Ti=N("Hours",!0),Si={calendar:wa,longDateFormat:Da,invalidDate:Ta,ordinal:Sa,ordinalParse:ja,relativeTime:Ha,months:fi,monthsShort:mi,week:yi,weekdays:Mi,weekdaysMin:Li,weekdaysShort:bi,meridiemParse:Di},ji={},Hi={},Ai=/^\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)?)?$/,Ci=/^\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)?)?$/,Pi=/Z|[+-]\d\d(?::?\d\d)?/,Oi=[["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}/]],Fi=[["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/]],Wi=/^\/?Date\((\-?\d+)/i;t.createFromInputFallback=x("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),t.ISO_8601=function(){};var Ii=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Mt.apply(null,arguments);return this.isValid()&&e.isValid()?ethis?this:e:p()}),zi=function(){return Date.now?Date.now():+new Date};Dt("Z",":"),Dt("ZZ",""),X("Z",Qa),X("ZZ",Qa),ae(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Tt(Qa,e)});var Ri=/([\+\-]|\d\d)/gi;t.updateOffset=function(){};var Ni=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Vi=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Nt.fn=Yt.prototype;var Bi=Jt(1,"add"),$i=Jt(-1,"subtract");t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ji=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});q(0,["gg",2],0,function(){return this.weekYear()%100}),q(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Tn("gggg","weekYear"),Tn("ggggg","weekYear"),Tn("GGGG","isoWeekYear"),Tn("GGGGG","isoWeekYear"),W("weekYear","gg"),W("isoWeekYear","GG"),z("weekYear",1),z("isoWeekYear",1),X("G",Ka),X("g",Ka),X("GG",Va,Ea),X("gg",Va,Ea),X("GGGG",Ua,Ra),X("gggg",Ua,Ra),X("GGGGG",qa,Na),X("ggggg",qa,Na),ie(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,a){t[a.substr(0,2)]=L(e)}),ie(["gg","GG"],function(e,n,a,i){n[i]=t.parseTwoDigitYear(e)}),q("Q",0,"Qo","quarter"),W("quarter","Q"),z("quarter",7),X("Q",Ia),ae("Q",function(e,t){t[ii]=3*(L(e)-1)}),q("D",["DD",2],"Do","date"),W("date","D"),z("date",9),X("D",Va),X("DD",Va,Ea),X("Do",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),ae(["D","DD"],ri),ae("Do",function(e,t){t[ri]=L(e.match(Va)[0],10)});var Ui=N("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),W("dayOfYear","DDD"),z("dayOfYear",4),X("DDD",Ja),X("DDDD",za),ae(["DDD","DDDD"],function(e,t,n){n._dayOfYear=L(e)}),q("m",["mm",2],0,"minute"),W("minute","m"),z("minute",14),X("m",Va),X("mm",Va,Ea),ae(["m","mm"],si);var qi=N("Minutes",!1);q("s",["ss",2],0,"second"),W("second","s"),z("second",15),X("s",Va),X("ss",Va,Ea),ae(["s","ss"],ui);var Gi=N("Seconds",!1);q("S",0,0,function(){return~~(this.millisecond()/100)}),q(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,function(){return 10*this.millisecond()}),q(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),q(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),q(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),q(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),q(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),W("millisecond","ms"),z("millisecond",16),X("S",Ja,Ia),X("SS",Ja,Ea),X("SSS",Ja,za);var Ki;for(Ki="SSSS";Ki.length<=9;Ki+="S")X(Ki,Ga);for(Ki="S";Ki.length<=9;Ki+="S")ae(Ki,Wn);var Zi=N("Milliseconds",!1);q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var Qi=y.prototype;Qi.add=Bi,Qi.calendar=Gt,Qi.clone=Kt,Qi.diff=an,Qi.endOf=gn,Qi.format=dn,Qi.from=ln,Qi.fromNow=cn,Qi.to=hn,Qi.toNow=_n,Qi.get=$,Qi.invalidAt=wn,Qi.isAfter=Zt,Qi.isBefore=Qt,Qi.isBetween=Xt,Qi.isSame=en,Qi.isSameOrAfter=tn,Qi.isSameOrBefore=nn,Qi.isValid=Yn,Qi.lang=Ji,Qi.locale=fn,Qi.localeData=mn,Qi.max=Ei,Qi.min=Ii,Qi.parsingFlags=xn,Qi.set=J,Qi.startOf=pn,Qi.subtract=$i,Qi.toArray=bn,Qi.toObject=Ln,Qi.toDate=Mn,Qi.toISOString=sn,Qi.inspect=un,Qi.toJSON=kn,Qi.toString=on,Qi.unix=yn,Qi.valueOf=vn,Qi.creationData=Dn,Qi.year=vi,Qi.isLeapYear=ye,Qi.weekYear=Sn,Qi.isoWeekYear=jn,Qi.quarter=Qi.quarters=On,Qi.month=he,Qi.daysInMonth=_e,Qi.week=Qi.weeks=Se,Qi.isoWeek=Qi.isoWeeks=je,Qi.weeksInYear=An,Qi.isoWeeksInYear=Hn,Qi.date=Ui,Qi.day=Qi.days=Ie,Qi.weekday=Ee,Qi.isoWeekday=ze,Qi.dayOfYear=Fn,Qi.hour=Qi.hours=Ti,Qi.minute=Qi.minutes=qi,Qi.second=Qi.seconds=Gi,Qi.millisecond=Qi.milliseconds=Zi,Qi.utcOffset=Ht,Qi.utc=Ct,Qi.local=Pt,Qi.parseZone=Ot,Qi.hasAlignedHourOffset=Ft,Qi.isDST=Wt,Qi.isLocal=Et,Qi.isUtcOffset=zt,Qi.isUtc=Rt,Qi.isUTC=Rt,Qi.zoneAbbr=In,Qi.zoneName=En,Qi.dates=x("dates accessor is deprecated. Use date instead.",Ui),Qi.months=x("months accessor is deprecated. Use month instead",he),Qi.years=x("years accessor is deprecated. Use year instead",vi),Qi.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",At),Qi.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",It);var Xi=j.prototype;Xi.calendar=H,Xi.longDateFormat=A,Xi.invalidDate=C,Xi.ordinal=P,Xi.preparse=Nn,Xi.postformat=Nn,Xi.relativeTime=O,Xi.pastFuture=F,Xi.set=T,Xi.months=se,Xi.monthsShort=ue,Xi.monthsParse=le,Xi.monthsRegex=me,Xi.monthsShortRegex=fe,Xi.week=we,Xi.firstDayOfYear=Te,Xi.firstDayOfWeek=De,Xi.weekdays=Ce,Xi.weekdaysMin=Oe,Xi.weekdaysShort=Pe,Xi.weekdaysParse=We,Xi.weekdaysRegex=Re,Xi.weekdaysShortRegex=Ne,Xi.weekdaysMinRegex=Ve,Xi.isPM=Ge,Xi.meridiem=Ke,et("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=1===L(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+n}}),t.lang=x("moment.lang is deprecated. Use moment.locale instead.",et),t.langData=x("moment.langData is deprecated. Use moment.localeData instead.",at);var er=Math.abs,tr=sa("ms"),nr=sa("s"),ar=sa("m"),ir=sa("h"),rr=sa("d"),or=sa("w"),sr=sa("M"),ur=sa("y"),dr=da("milliseconds"),lr=da("seconds"),cr=da("minutes"),hr=da("hours"),_r=da("days"),fr=da("months"),mr=da("years"),pr=Math.round,gr={s:45,m:45,h:22,d:26,M:11},vr=Math.abs,yr=Yt.prototype;return yr.abs=Zn,yr.add=Xn,yr.subtract=ea,yr.as=ra,yr.asMilliseconds=tr,yr.asSeconds=nr,yr.asMinutes=ar,yr.asHours=ir,yr.asDays=rr,yr.asWeeks=or,yr.asMonths=sr,yr.asYears=ur,yr.valueOf=oa,yr._bubble=na,yr.get=ua,yr.milliseconds=dr,yr.seconds=lr,yr.minutes=cr,yr.hours=hr,yr.days=_r,yr.weeks=la,yr.months=fr,yr.years=mr,yr.humanize=ma,yr.toISOString=pa,yr.toString=pa,yr.toJSON=pa,yr.locale=fn,yr.localeData=mn,yr.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",pa),yr.lang=Ji,q("X",0,0,"unix"),q("x",0,0,"valueOf"),X("x",Ka),X("X",Xa),ae("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ae("x",function(e,t,n){n._d=new Date(L(e))}),t.version="2.17.1",a(Mt),t.fn=Qi,t.min=Lt,t.max=kt,t.now=zi,t.utc=h,t.unix=zn,t.months=Jn,t.isDate=u,t.locale=et,t.invalid=p,t.duration=Nt,t.isMoment=M,t.weekdays=qn,t.parseZone=Rn,t.localeData=at,t.isDuration=xt,t.monthsShort=Un,t.weekdaysMin=Kn,t.defineLocale=tt,t.updateLocale=nt,t.locales=it,t.weekdaysShort=Gn,t.normalizeUnits=I,t.relativeTimeRounding=_a,t.relativeTimeThreshold=fa,t.calendarFormat=qt,t.prototype=Qi,t})}).call(t,n(32)(e))},function(e,t,n){var a=n(75),i="object"==typeof self&&self&&self.Object===Object&&self,r=a||i||Function("return this")();e.exports=r},function(e,t){var n=Array.isArray;e.exports=n},function(e,t){function n(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}e.exports=n},function(e,t){function n(e){return null!=e&&"object"==typeof e}e.exports=n},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){return(0,o.default)(e,t)}Object.defineProperty(t,"__esModule",{value:!0}),t.mergeOptions=i;var r=n(369),o=a(r)},function(e,t,n){var a=n(233)();n(231)(a),n(247)(a),n(227)(a),n(236)(a),n(230)(a),n(226)(a),n(228)(a),n(229)(a),n(234)(a),n(238)(a),n(239)(a),n(237)(a),n(240)(a),n(235)(a),n(232)(a),n(241)(a),n(242)(a),n(243)(a),n(244)(a),n(245)(a),n(250)(a),n(248)(a),n(249)(a),n(251)(a),n(252)(a),n(253)(a),n(220)(a),n(221)(a),n(222)(a),n(223)(a),n(224)(a),n(225)(a),n(213)(a),n(214)(a),n(215)(a),n(216)(a),n(217)(a),n(218)(a),n(219)(a),window.Chart=e.exports=a},function(e,t,n){function a(e,t){var n=r(e,t);return i(n)?n:void 0}var i=n(279),r=n(316);e.exports=a},function(e,t,n){/*! + * Vue.js v1.0.28 * (c) 2016 Evan You * Released under the MIT License. */ -"use strict";function n(e,t,a){if(i(e,t))return void(e[t]=a);if(e._isVue)return void n(e._data,t,a);var r=e.__ob__;if(!r)return void(e[t]=a);if(r.convert(t,a),r.dep.notify(),r.vms)for(var o=r.vms.length;o--;){var s=r.vms[o];s._proxy(t),s._digest()}return a}function a(e,t){if(i(e,t)){delete e[t];var n=e.__ob__;if(!n)return void(e._isVue&&(delete e._data[t],e._digest()));if(n.dep.notify(),n.vms)for(var a=n.vms.length;a--;){var r=n.vms[a];r._unproxy(t),r._digest()}}}function i(e,t){return jn.call(e,t)}function r(e){return An.test(e)}function o(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function s(e){return null==e?"":e.toString()}function d(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function l(e){return"true"===e||"false"!==e&&e}function u(e){var t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t!==n||34!==t&&39!==t?e:e.slice(1,-1)}function c(e){return e.replace(Hn,h)}function h(e,t){return t?t.toUpperCase():""}function _(e){return e.replace(Cn,"$1-$2").toLowerCase()}function f(e){return e.replace(Pn,h)}function m(e,t){return function(n){var a=arguments.length;return a?a>1?e.apply(t,arguments):e.call(t,n):e.call(t)}}function p(e,t){t=t||0;for(var n=e.length-t,a=new Array(n);n--;)a[n]=e[n+t];return a}function g(e,t){for(var n=Object.keys(t),a=n.length;a--;)e[n[a]]=t[n[a]];return e}function y(e){return null!==e&&"object"==typeof e}function v(e){return Fn.call(e)===On}function M(e,t,n,a){Object.defineProperty(e,t,{value:n,enumerable:!!a,writable:!0,configurable:!0})}function b(e,t){var n,a,i,r,o,s=function d(){var s=Date.now()-r;s=0?n=setTimeout(d,t-s):(n=null,o=e.apply(i,a),n||(i=a=null))};return function(){return i=this,a=arguments,r=Date.now(),n||(n=setTimeout(s,t)),o}}function L(e,t){for(var n=e.length;n--;)if(e[n]===t)return n;return-1}function k(e){var t=function n(){if(!n.cancelled)return e.apply(this,arguments)};return t.cancel=function(){t.cancelled=!0},t}function Y(e,t){return e==t||!(!y(e)||!y(t))&&JSON.stringify(e)===JSON.stringify(t)}function x(e){this.size=0,this.limit=e,this.head=this.tail=void 0,this._keymap=Object.create(null)}function w(){var e,t=ia.slice(ua,da).trim();if(t){e={};var n=t.match(ga);e.name=n[0],n.length>1&&(e.args=n.slice(1).map(D))}e&&(ra.filters=ra.filters||[]).push(e),ua=da+1}function D(e){if(ya.test(e))return{value:d(e),dynamic:!1};var t=u(e),n=t===e;return{value:n?e:t,dynamic:n}}function T(e){var t=pa.get(e);if(t)return t;for(ia=e,ca=ha=!1,_a=fa=ma=0,ua=0,ra={},da=0,la=ia.length;dal&&d.push({value:e.slice(l,a)}),i=ka.test(n[0]),r=i?n[1]:n[2],o=r.charCodeAt(0),s=42===o,r=s?r.slice(1):r,d.push({tag:!0,value:r.trim(),html:i,oneTime:s}),l=a+n[0].length;return l1?e.map(function(e){return C(e,t)}).join("+"):C(e[0],t,!0)}function C(e,t,n){return e.tag?e.oneTime&&t?'"'+t.$eval(e.value)+'"':P(e.value,n):'"'+e.value+'"'}function P(e,t){if(Ya.test(e)){var n=T(e);return n.filters?"this._applyFilters("+n.expression+",null,"+JSON.stringify(n.filters)+",false)":"("+e+")"}return t?e:"("+e+")"}function F(e,t,n,a){I(e,1,function(){t.appendChild(e)},n,a)}function O(e,t,n,a){I(e,1,function(){B(e,t)},n,a)}function W(e,t,n){I(e,-1,function(){J(e)},t,n)}function I(e,t,n,a,i){var r=e.__v_trans;if(!r||!r.hooks&&!Kn||!a._isCompiled||a.$parent&&!a.$parent._isCompiled)return n(),void(i&&i());var o=t>0?"enter":"leave";r[o](n,i)}function E(e){if("string"==typeof e){e=document.querySelector(e)}return e}function R(e){if(!e)return!1;var t=e.ownerDocument.documentElement,n=e.parentNode;return t===e||t===n||!(!n||1!==n.nodeType||!t.contains(n))}function z(e,t){var n=e.getAttribute(t);return null!==n&&e.removeAttribute(t),n}function N(e,t){var n=z(e,":"+t);return null===n&&(n=z(e,"v-bind:"+t)),n}function V(e,t){return e.hasAttribute(t)||e.hasAttribute(":"+t)||e.hasAttribute("v-bind:"+t)}function B(e,t){t.parentNode.insertBefore(e,t)}function $(e,t){t.nextSibling?B(e,t.nextSibling):t.parentNode.appendChild(e)}function J(e){e.parentNode.removeChild(e)}function U(e,t){t.firstChild?B(e,t.firstChild):t.appendChild(e)}function G(e,t){var n=e.parentNode;n&&n.replaceChild(t,e)}function q(e,t,n,a){e.addEventListener(t,n,a)}function K(e,t,n){e.removeEventListener(t,n)}function Z(e){var t=e.className;return"object"==typeof t&&(t=t.baseVal||""),t}function X(e,t){Vn&&!/svg$/.test(e.namespaceURI)?e.className=t:e.setAttribute("class",t)}function Q(e,t){if(e.classList)e.classList.add(t);else{var n=" "+Z(e)+" ";n.indexOf(" "+t+" ")<0&&X(e,(n+t).trim())}}function ee(e,t){if(e.classList)e.classList.remove(t);else{for(var n=" "+Z(e)+" ",a=" "+t+" ";n.indexOf(a)>=0;)n=n.replace(a," ");X(e,n.trim())}e.className||e.removeAttribute("class")}function te(e,t){var n,a;if(ie(e)&&le(e.content)&&(e=e.content),e.hasChildNodes())for(ne(e),a=t?document.createDocumentFragment():document.createElement("div");n=e.firstChild;)a.appendChild(n);return a}function ne(e){for(var t;t=e.firstChild,ae(t);)e.removeChild(t);for(;t=e.lastChild,ae(t);)e.removeChild(t)}function ae(e){return e&&(3===e.nodeType&&!e.data.trim()||8===e.nodeType)}function ie(e){return e.tagName&&"template"===e.tagName.toLowerCase()}function re(e,t){var n=Ta.debug?document.createComment(e):document.createTextNode(t?" ":"");return n.__v_anchor=!0,n}function oe(e){if(e.hasAttributes())for(var t=e.attributes,n=0,a=t.length;n=d.length){for(var e=0;e=97&&t<=122||t>=65&&t<=90?"ident":t>=49&&t<=57?"number":"else"}function Se(e){var t=e.trim();return("0"!==e.charAt(0)||!isNaN(e))&&(r(t)?u(t):"*"+t)}function je(e){function t(){var t=e[u+1];if(c===Qa&&"'"===t||c===ei&&'"'===t)return u++,a="\\"+t,_[Ba](),!0}var n,a,i,r,o,s,d,l=[],u=-1,c=Ga,h=0,_=[];for(_[$a]=function(){void 0!==i&&(l.push(i),i=void 0)},_[Ba]=function(){void 0===i?i=a:i+=a},_[Ja]=function(){_[Ba](),h++},_[Ua]=function(){if(h>0)h--,c=Xa,_[Ba]();else{if(h=0,i=Se(i),i===!1)return!1;_[$a]()}};null!=c;)if(u++,n=e[u],"\\"!==n||!t()){if(r=Te(n),d=ai[c],o=d[r]||d["else"]||ni,o===ni)return;if(c=o[0],s=_[o[1]],s&&(a=o[2],a=void 0===a?n:a,s()===!1))return;if(c===ti)return l.raw=e,l}}function Ae(e){var t=Va.get(e);return t||(t=je(e),t&&Va.put(e,t)),t}function He(e,t){return ze(t).get(e)}function Ce(e,t,a){var i=e;if("string"==typeof t&&(t=je(t)),!t||!y(e))return!1;for(var r,o,s=0,d=t.length;s-1?n.replace(_i,We):n,t+"scope."+n)}function We(e,t){return gi[t]}function Ie(e){li.test(e),gi.length=0;var t=e.replace(hi,Fe).replace(ui,"");return t=(" "+t).replace(mi,Oe).replace(_i,We),Ee(t)}function Ee(e){try{return new Function("scope","return "+e+";")}catch(t){return Pe}}function Re(e){var t=Ae(e);if(t)return function(e,n){Ce(e,t,n)}}function ze(e,t){e=e.trim();var n=ri.get(e);if(n)return t&&!n.set&&(n.set=Re(n.exp)),n;var a={exp:e};return a.get=Ne(e)&&e.indexOf("[")<0?Ee("scope."+e):Ie(e),t&&(a.set=Re(e)),ri.put(e,a),a}function Ne(e){return fi.test(e)&&!pi.test(e)&&"Math."!==e.slice(0,5)}function Ve(){vi.length=0,Mi.length=0,bi={},Li={},ki=!1}function Be(){for(var e=!0;e;)e=!1,$e(vi),$e(Mi),vi.length?e=!0:(Rn&&Ta.devtools&&Rn.emit("flush"),Ve())}function $e(e){for(var t=0;t0){var o=r+(a?t:ue(t));i=Wi.get(o),i||(i=Ot(n,e.$options,!0),Wi.put(o,i))}else i=Ot(n,e.$options,!0);this.linker=i}function dt(e,t,n){var a=e.node.previousSibling;if(a){for(e=a.__v_frag;!(e&&e.forId===n&&e.inserted||a===t);){if(a=a.previousSibling,!a)return;e=a.__v_frag}return e}}function lt(e){var t=e.node;if(e.end)for(;!t.__vue__&&t!==e.end&&t.nextSibling;)t=t.nextSibling;return t.__vue__}function ut(e){for(var t=-1,n=new Array(Math.floor(e));++t47&&t<58?parseInt(e,10):1===e.length&&(t=e.toUpperCase().charCodeAt(0),t>64&&t<91)?t:ir[e]});return n=[].concat.apply([],n),function(t){if(n.indexOf(t.keyCode)>-1)return e.call(this,t)}}function mt(e){return function(t){return t.stopPropagation(),e.call(this,t)}}function pt(e){return function(t){return t.preventDefault(),e.call(this,t)}}function gt(e){return function(t){if(t.target===t.currentTarget)return e.call(this,t)}}function yt(e){if(lr[e])return lr[e];var t=vt(e);return lr[e]=lr[t]=t,t}function vt(e){e=_(e);var t=c(e),n=t.charAt(0).toUpperCase()+t.slice(1);ur||(ur=document.createElement("div"));var a,i=or.length;if("filter"!==t&&t in ur.style)return{kebab:e,camel:t};for(;i--;)if(a=sr[i]+n,a in ur.style)return{kebab:or[i]+e,camel:a}}function Mt(e){var t=[];if(Wn(e))for(var n=0,a=e.length;n=i?n():e[r].call(t,a)}var i=e.length,r=0;e[0].call(t,a)}function kt(e,t,n){for(var a,i,o,s,d,l,u,h=[],f=Object.keys(t),m=f.length;m--;)if(i=f[m],a=t[i]||wr,d=c(i),Dr.test(d)){if(u={name:i,path:d,options:a,mode:xr.ONE_WAY,raw:null},o=_(i),null===(s=N(e,o))&&(null!==(s=N(e,o+".sync"))?u.mode=xr.TWO_WAY:null!==(s=N(e,o+".once"))&&(u.mode=xr.ONE_TIME)),null!==s)u.raw=s,l=T(s),s=l.expression,u.filters=l.filters,r(s)&&!l.filters?u.optimizedLiteral=!0:u.dynamic=!0,u.parentPath=s;else if(null!==(s=z(e,o)))u.raw=s;else;h.push(u)}return Yt(h)}function Yt(e){return function(t,n){t._props={};for(var a,r,o,s,c,h=t.$options.propsData,f=e.length;f--;)if(a=e[f],c=a.raw,r=a.path,o=a.options,t._props[r]=a,h&&i(h,r)&&wt(t,a,h[r]),null===c)wt(t,a,void 0);else if(a.dynamic)a.mode===xr.ONE_TIME?(s=(n||t._context||t).$get(a.parentPath),wt(t,a,s)):t._context?t._bindDir({name:"prop",def:Sr,prop:a},null,null,n):wt(t,a,t.$get(a.parentPath));else if(a.optimizedLiteral){var m=u(c);s=m===c?l(d(c)):m,wt(t,a,s)}else s=o.type===Boolean&&(""===c||c===_(a.name))||c,wt(t,a,s)}}function xt(e,t,n,a){var i=t.dynamic&&Ne(t.parentPath),r=n;void 0===r&&(r=Tt(e,t)),r=jt(t,r,e);var o=r!==n;St(t,r,e)||(r=void 0),i&&!o?be(function(){a(r)}):a(r)}function wt(e,t,n){xt(e,t,n,function(n){we(e,t.path,n)})}function Dt(e,t,n){xt(e,t,n,function(n){e[t.path]=n})}function Tt(e,t){var n=t.options;if(!i(n,"default"))return n.type!==Boolean&&void 0;var a=n["default"];return y(a),"function"==typeof a&&n.type!==Function?a.call(e):a}function St(e,t,n){if(!e.options.required&&(null===e.raw||null==t))return!0;var a=e.options,i=a.type,r=!i,o=[];if(i){Wn(i)||(i=[i]);for(var s=0;st?-1:e===t?0:1}function Et(e,t,n,a){function i(i){Rt(e,t,i),n&&a&&Rt(n,a)}return i.dirs=t,i}function Rt(e,t,n){for(var a=t.length;a--;)t[a]._teardown()}function zt(e,t,n,a){var i=kt(t,n,e),r=Wt(function(){i(e,a)},e);return Et(e,r)}function Nt(e,t,n){var a,i,r=t._containerAttrs,o=t._replacerAttrs;if(11!==e.nodeType)t._asComponent?(r&&n&&(a=nn(r,n)),o&&(i=nn(o,t))):i=nn(e.attributes,t);else;return t._containerAttrs=t._replacerAttrs=null,function(e,t,n){var r,o=e._context;o&&a&&(r=Wt(function(){a(o,t,null,n)},o));var s=Wt(function(){i&&i(e,t)},e);return Et(e,s,o,r)}}function Vt(e,t){var n=e.nodeType;return 1!==n||sn(e)?3===n&&e.data.trim()?$t(e,t):null:Bt(e,t)}function Bt(e,t){if("TEXTAREA"===e.tagName){var n=A(e.value);n&&(e.setAttribute(":value",H(n)),e.value="")}var a,i=e.hasAttributes(),r=i&&p(e.attributes);return i&&(a=Qt(e,r,t)),a||(a=Zt(e,t)),a||(a=Xt(e,t)),!a&&i&&(a=nn(r,t)),a}function $t(e,t){if(e._skip)return Jt;var n=A(e.wholeText);if(!n)return null;for(var a=e.nextSibling;a&&3===a.nodeType;)a._skip=!0,a=a.nextSibling;for(var i,r,o=document.createDocumentFragment(),s=0,d=n.length;s_.priority)&&(_=h,u=i.name,s=an(i.name),o=i.value,l=d[1],c=d[2]));return _?tn(e,l,o,n,_,u,c,s):void 0}function en(){}function tn(e,t,n,a,i,r,o,s){var d=T(n),l={name:t,arg:o,expression:d.expression,filters:d.filters,raw:n,attr:r,modifiers:s,def:i};"for"!==t&&"router-view"!==t||(l.ref=oe(e));var u=function(e,t,n,a,i){l.ref&&we((a||e).$refs,l.ref,null),e._bindDir(l,t,n,a,i)};return u.terminal=!0,u}function nn(e,t){function n(e,t,n){var a=n&&on(n),i=!a&&T(r);m.push({name:e,attr:o,raw:s,def:t,arg:l,modifiers:u,expression:i&&i.expression,filters:i&&i.filters,interp:n,hasOneTime:a})}for(var a,i,r,o,s,d,l,u,c,h,_,f=e.length,m=[];f--;)if(a=e[f],i=o=a.name,r=s=a.value,h=A(r),l=null,u=an(i),i=i.replace(Br,""),h)r=H(h),l=i,n("bind",Lr.bind,h);else if($r.test(i))u.literal=!zr.test(i),n("transition",Rr.transition);else if(Nr.test(i))l=i.replace(Nr,""),n("on",Lr.on);else if(zr.test(i))d=i.replace(zr,""),"style"===d||"class"===d?n(d,Rr[d]):(l=d,n("bind",Lr.bind));else if(_=i.match(Vr)){if(d=_[1],l=_[2],"else"===d)continue;c=ve(t,"directives",d,!0),c&&n(d,c)}if(m.length)return rn(m)}function an(e){var t=Object.create(null),n=e.match(Br);if(n)for(var a=n.length;a--;)t[n[a].slice(1)]=!0;return t}function rn(e){return function(t,n,a,i,r){for(var o=e.length;o--;)t._bindDir(e[o],n,a,i,r)}}function on(e){for(var t=e.length;t--;)if(e[t].oneTime)return!0}function sn(e){return"SCRIPT"===e.tagName&&(!e.hasAttribute("type")||"text/javascript"===e.getAttribute("type"))}function dn(e,t){return t&&(t._containerAttrs=un(e)),ie(e)&&(e=Qe(e)),t&&(t._asComponent&&!t.template&&(t.template=""),t.template&&(t._content=te(e),e=ln(e,t))),le(e)&&(U(re("v-start",!0),e),e.appendChild(re("v-end",!0))),e}function ln(e,t){var n=t.template,a=Qe(n,!0);if(a){var i=a.firstChild,r=i.tagName&&i.tagName.toLowerCase();return t.replace?(e===document.body,a.childNodes.length>1||1!==i.nodeType||"component"===r||ve(t,"components",r)||V(i,"is")||ve(t,"elementDirectives",r)||i.hasAttribute("v-for")||i.hasAttribute("v-if")?a:(t._replacerAttrs=un(i),cn(e,i),i)):(e.appendChild(a),e)}}function un(e){if(1===e.nodeType&&e.hasAttributes())return p(e.attributes)}function cn(e,t){for(var n,a,i=e.attributes,r=i.length;r--;)n=i[r].name,a=i[r].value,t.hasAttribute(n)||Gr.test(n)?"class"===n&&!A(a)&&(a=a.trim())&&a.split(/\s+/).forEach(function(e){Q(t,e)}):t.setAttribute(n,a)}function hn(e,t){if(t){for(var n,a,i=e._slotContents=Object.create(null),r=0,o=t.children.length;r1?p(n):n;var i=t&&n.some(function(e){return e._fromParent});i&&(a=!1);for(var r=p(arguments,1),o=0,s=n.length;ot?r:-r}var n=null,a=void 0;e=to(e);var i=p(arguments,1),r=i[i.length-1];"number"==typeof r?(r=r<0?-1:1,i=i.length>1?i.slice(0,-1):i):r=1;var o=i[0];return o?("function"==typeof o?n=function(e,t){return o(e,t)*r}:(a=Array.prototype.concat.apply([],i),n=function(e,i,r){return r=r||0,r>=a.length-1?t(e,i,r):t(e,i,r)||n(e,i,r+1)}),e.slice().sort(n)):e}function Tn(e,t){var n;if(v(e)){var a=Object.keys(e);for(n=a.length;n--;)if(Tn(e[a[n]],t))return!0}else if(Wn(e)){for(n=e.length;n--;)if(Tn(e[n],t))return!0}else if(null!=e)return e.toString().toLowerCase().indexOf(t)>-1}function Sn(e){function t(e){return new Function("return function "+f(e)+" (options) { this._init(options) }")()}e.options={directives:Lr,elementDirectives:eo,filters:ao,transitions:{},components:{},partials:{},replace:!0},e.util=za,e.config=Ta,e.set=n,e["delete"]=a,e.nextTick=ta,e.compiler=qr,e.FragmentFactory=st,e.internalDirectives=Rr,e.parsers={path:ii,text:xa,template:Fi,directive:va,expression:yi},e.cid=0;var i=1;e.extend=function(e){e=e||{};var n=this,a=0===n.cid;if(a&&e._Ctor)return e._Ctor;var r=e.name||n.options.name,o=t(r||"VueComponent");return o.prototype=Object.create(n.prototype),o.prototype.constructor=o,o.cid=i++,o.options=ye(n.options,e),o["super"]=n,o.extend=n.extend,Ta._assetTypes.forEach(function(e){o[e]=n[e]}),r&&(o.options.components[r]=o),a&&(e._Ctor=o),o},e.use=function(e){if(!e.installed){var t=p(arguments,1);return t.unshift(this),"function"==typeof e.install?e.install.apply(e,t):e.apply(null,t),e.installed=!0,this}},e.mixin=function(t){e.options=ye(e.options,t)},Ta._assetTypes.forEach(function(t){e[t]=function(n,a){return a?("component"===t&&v(a)&&(a.name||(a.name=n),a=e.extend(a)),this.options[t+"s"][n]=a,a):this.options[t+"s"][n]}}),g(e.transition,ja)}var jn=Object.prototype.hasOwnProperty,An=/^\s?(true|false|-?[\d\.]+|'[^']*'|"[^"]*")\s?$/,Hn=/-(\w)/g,Cn=/([a-z\d])([A-Z])/g,Pn=/(?:^|[-_\/])(\w)/g,Fn=Object.prototype.toString,On="[object Object]",Wn=Array.isArray,In="__proto__"in{},En="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),Rn=En&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,zn=En&&window.navigator.userAgent.toLowerCase(),Nn=zn&&zn.indexOf("trident")>0,Vn=zn&&zn.indexOf("msie 9.0")>0,Bn=zn&&zn.indexOf("android")>0,$n=zn&&/(iphone|ipad|ipod|ios)/i.test(zn),Jn=$n&&zn.match(/os ([\d_]+)/),Un=Jn&&Jn[1].split("_"),Gn=Un&&Number(Un[0])>=9&&Number(Un[1])>=3&&!window.indexedDB,qn=void 0,Kn=void 0,Zn=void 0,Xn=void 0;if(En&&!Vn){var Qn=void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend,ea=void 0===window.onanimationend&&void 0!==window.onwebkitanimationend;qn=Qn?"WebkitTransition":"transition",Kn=Qn?"webkitTransitionEnd":"transitionend",Zn=ea?"WebkitAnimation":"animation",Xn=ea?"webkitAnimationEnd":"animationend"}var ta=function(){function e(){i=!1;var e=a.slice(0);a=[];for(var t=0;t=this.length&&(this.length=Number(e)+1),this.splice(e,1,t)[0]}),M(Wa,"$remove",function(e){if(this.length){var t=L(this,e);return t>-1?this.splice(t,1):void 0}});var Ea=Object.getOwnPropertyNames(Ia),Ra=!0;Le.prototype.walk=function(e){for(var t=Object.keys(e),n=0,a=t.length;n",""],tr:[2,"","
"],col:[2,"","
"]};Si.td=Si.th=[3,"","
"],Si.option=Si.optgroup=[1,'"],Si.thead=Si.tbody=Si.colgroup=Si.caption=Si.tfoot=[1,"","
"],Si.g=Si.defs=Si.symbol=Si.use=Si.image=Si.text=Si.circle=Si.ellipse=Si.line=Si.path=Si.polygon=Si.polyline=Si.rect=[1,'',""];var ji=/<([\w:-]+)/,Ai=/&#?\w+?;/,Hi=/\n\t // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n\t // +0200, so we adjust the time as needed, to be valid.\n\t //\n\t // Keeping the time actually adds/subtracts (one hour)\n\t // from the actual represented time. That is why we call updateOffset\n\t // a second time. In case it wants us to change the offset again\n\t // _changeInProgress == true case, then we have to adjust, because\n\t // there is no such time in the given timezone.\n\t function getSetOffset (input, keepLocalTime) {\n\t var offset = this._offset || 0,\n\t localAdjust;\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\t if (input != null) {\n\t if (typeof input === 'string') {\n\t input = offsetFromString(matchShortOffset, input);\n\t } else if (Math.abs(input) < 16) {\n\t input = input * 60;\n\t }\n\t if (!this._isUTC && keepLocalTime) {\n\t localAdjust = getDateOffset(this);\n\t }\n\t this._offset = input;\n\t this._isUTC = true;\n\t if (localAdjust != null) {\n\t this.add(localAdjust, 'm');\n\t }\n\t if (offset !== input) {\n\t if (!keepLocalTime || this._changeInProgress) {\n\t add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n\t } else if (!this._changeInProgress) {\n\t this._changeInProgress = true;\n\t utils_hooks__hooks.updateOffset(this, true);\n\t this._changeInProgress = null;\n\t }\n\t }\n\t return this;\n\t } else {\n\t return this._isUTC ? offset : getDateOffset(this);\n\t }\n\t }\n\t\n\t function getSetZone (input, keepLocalTime) {\n\t if (input != null) {\n\t if (typeof input !== 'string') {\n\t input = -input;\n\t }\n\t\n\t this.utcOffset(input, keepLocalTime);\n\t\n\t return this;\n\t } else {\n\t return -this.utcOffset();\n\t }\n\t }\n\t\n\t function setOffsetToUTC (keepLocalTime) {\n\t return this.utcOffset(0, keepLocalTime);\n\t }\n\t\n\t function setOffsetToLocal (keepLocalTime) {\n\t if (this._isUTC) {\n\t this.utcOffset(0, keepLocalTime);\n\t this._isUTC = false;\n\t\n\t if (keepLocalTime) {\n\t this.subtract(getDateOffset(this), 'm');\n\t }\n\t }\n\t return this;\n\t }\n\t\n\t function setOffsetToParsedOffset () {\n\t if (this._tzm) {\n\t this.utcOffset(this._tzm);\n\t } else if (typeof this._i === 'string') {\n\t this.utcOffset(offsetFromString(matchOffset, this._i));\n\t }\n\t return this;\n\t }\n\t\n\t function hasAlignedHourOffset (input) {\n\t if (!this.isValid()) {\n\t return false;\n\t }\n\t input = input ? local__createLocal(input).utcOffset() : 0;\n\t\n\t return (this.utcOffset() - input) % 60 === 0;\n\t }\n\t\n\t function isDaylightSavingTime () {\n\t return (\n\t this.utcOffset() > this.clone().month(0).utcOffset() ||\n\t this.utcOffset() > this.clone().month(5).utcOffset()\n\t );\n\t }\n\t\n\t function isDaylightSavingTimeShifted () {\n\t if (!isUndefined(this._isDSTShifted)) {\n\t return this._isDSTShifted;\n\t }\n\t\n\t var c = {};\n\t\n\t copyConfig(c, this);\n\t c = prepareConfig(c);\n\t\n\t if (c._a) {\n\t var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);\n\t this._isDSTShifted = this.isValid() &&\n\t compareArrays(c._a, other.toArray()) > 0;\n\t } else {\n\t this._isDSTShifted = false;\n\t }\n\t\n\t return this._isDSTShifted;\n\t }\n\t\n\t function isLocal () {\n\t return this.isValid() ? !this._isUTC : false;\n\t }\n\t\n\t function isUtcOffset () {\n\t return this.isValid() ? this._isUTC : false;\n\t }\n\t\n\t function isUtc () {\n\t return this.isValid() ? this._isUTC && this._offset === 0 : false;\n\t }\n\t\n\t // ASP.NET json date format regex\n\t var aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?\\d*)?$/;\n\t\n\t // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n\t // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n\t // and further modified to allow for strings containing both week and day\n\t var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\t\n\t function create__createDuration (input, key) {\n\t var duration = input,\n\t // matching against regexp is expensive, do it on demand\n\t match = null,\n\t sign,\n\t ret,\n\t diffRes;\n\t\n\t if (isDuration(input)) {\n\t duration = {\n\t ms : input._milliseconds,\n\t d : input._days,\n\t M : input._months\n\t };\n\t } else if (typeof input === 'number') {\n\t duration = {};\n\t if (key) {\n\t duration[key] = input;\n\t } else {\n\t duration.milliseconds = input;\n\t }\n\t } else if (!!(match = aspNetRegex.exec(input))) {\n\t sign = (match[1] === '-') ? -1 : 1;\n\t duration = {\n\t y : 0,\n\t d : toInt(match[DATE]) * sign,\n\t h : toInt(match[HOUR]) * sign,\n\t m : toInt(match[MINUTE]) * sign,\n\t s : toInt(match[SECOND]) * sign,\n\t ms : toInt(match[MILLISECOND]) * sign\n\t };\n\t } else if (!!(match = isoRegex.exec(input))) {\n\t sign = (match[1] === '-') ? -1 : 1;\n\t duration = {\n\t y : parseIso(match[2], sign),\n\t M : parseIso(match[3], sign),\n\t w : parseIso(match[4], sign),\n\t d : parseIso(match[5], sign),\n\t h : parseIso(match[6], sign),\n\t m : parseIso(match[7], sign),\n\t s : parseIso(match[8], sign)\n\t };\n\t } else if (duration == null) {// checks for null or undefined\n\t duration = {};\n\t } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n\t diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));\n\t\n\t duration = {};\n\t duration.ms = diffRes.milliseconds;\n\t duration.M = diffRes.months;\n\t }\n\t\n\t ret = new Duration(duration);\n\t\n\t if (isDuration(input) && hasOwnProp(input, '_locale')) {\n\t ret._locale = input._locale;\n\t }\n\t\n\t return ret;\n\t }\n\t\n\t create__createDuration.fn = Duration.prototype;\n\t\n\t function parseIso (inp, sign) {\n\t // We'd normally use ~~inp for this, but unfortunately it also\n\t // converts floats to ints.\n\t // inp may be undefined, so careful calling replace on it.\n\t var res = inp && parseFloat(inp.replace(',', '.'));\n\t // apply sign while we're at it\n\t return (isNaN(res) ? 0 : res) * sign;\n\t }\n\t\n\t function positiveMomentsDifference(base, other) {\n\t var res = {milliseconds: 0, months: 0};\n\t\n\t res.months = other.month() - base.month() +\n\t (other.year() - base.year()) * 12;\n\t if (base.clone().add(res.months, 'M').isAfter(other)) {\n\t --res.months;\n\t }\n\t\n\t res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\t\n\t return res;\n\t }\n\t\n\t function momentsDifference(base, other) {\n\t var res;\n\t if (!(base.isValid() && other.isValid())) {\n\t return {milliseconds: 0, months: 0};\n\t }\n\t\n\t other = cloneWithOffset(other, base);\n\t if (base.isBefore(other)) {\n\t res = positiveMomentsDifference(base, other);\n\t } else {\n\t res = positiveMomentsDifference(other, base);\n\t res.milliseconds = -res.milliseconds;\n\t res.months = -res.months;\n\t }\n\t\n\t return res;\n\t }\n\t\n\t function absRound (number) {\n\t if (number < 0) {\n\t return Math.round(-1 * number) * -1;\n\t } else {\n\t return Math.round(number);\n\t }\n\t }\n\t\n\t // TODO: remove 'name' arg after deprecation is removed\n\t function createAdder(direction, name) {\n\t return function (val, period) {\n\t var dur, tmp;\n\t //invert the arguments, but complain about it\n\t if (period !== null && !isNaN(+period)) {\n\t deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n\t 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n\t tmp = val; val = period; period = tmp;\n\t }\n\t\n\t val = typeof val === 'string' ? +val : val;\n\t dur = create__createDuration(val, period);\n\t add_subtract__addSubtract(this, dur, direction);\n\t return this;\n\t };\n\t }\n\t\n\t function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {\n\t var milliseconds = duration._milliseconds,\n\t days = absRound(duration._days),\n\t months = absRound(duration._months);\n\t\n\t if (!mom.isValid()) {\n\t // No op\n\t return;\n\t }\n\t\n\t updateOffset = updateOffset == null ? true : updateOffset;\n\t\n\t if (milliseconds) {\n\t mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n\t }\n\t if (days) {\n\t get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n\t }\n\t if (months) {\n\t setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n\t }\n\t if (updateOffset) {\n\t utils_hooks__hooks.updateOffset(mom, days || months);\n\t }\n\t }\n\t\n\t var add_subtract__add = createAdder(1, 'add');\n\t var add_subtract__subtract = createAdder(-1, 'subtract');\n\t\n\t function getCalendarFormat(myMoment, now) {\n\t var diff = myMoment.diff(now, 'days', true);\n\t return diff < -6 ? 'sameElse' :\n\t diff < -1 ? 'lastWeek' :\n\t diff < 0 ? 'lastDay' :\n\t diff < 1 ? 'sameDay' :\n\t diff < 2 ? 'nextDay' :\n\t diff < 7 ? 'nextWeek' : 'sameElse';\n\t }\n\t\n\t function moment_calendar__calendar (time, formats) {\n\t // We want to compare the start of today, vs this.\n\t // Getting start-of-today depends on whether we're local/utc/offset or not.\n\t var now = time || local__createLocal(),\n\t sod = cloneWithOffset(now, this).startOf('day'),\n\t format = utils_hooks__hooks.calendarFormat(this, sod) || 'sameElse';\n\t\n\t var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\t\n\t return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)));\n\t }\n\t\n\t function clone () {\n\t return new Moment(this);\n\t }\n\t\n\t function isAfter (input, units) {\n\t var localInput = isMoment(input) ? input : local__createLocal(input);\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n\t if (units === 'millisecond') {\n\t return this.valueOf() > localInput.valueOf();\n\t } else {\n\t return localInput.valueOf() < this.clone().startOf(units).valueOf();\n\t }\n\t }\n\t\n\t function isBefore (input, units) {\n\t var localInput = isMoment(input) ? input : local__createLocal(input);\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n\t if (units === 'millisecond') {\n\t return this.valueOf() < localInput.valueOf();\n\t } else {\n\t return this.clone().endOf(units).valueOf() < localInput.valueOf();\n\t }\n\t }\n\t\n\t function isBetween (from, to, units, inclusivity) {\n\t inclusivity = inclusivity || '()';\n\t return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n\t (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n\t }\n\t\n\t function isSame (input, units) {\n\t var localInput = isMoment(input) ? input : local__createLocal(input),\n\t inputMs;\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(units || 'millisecond');\n\t if (units === 'millisecond') {\n\t return this.valueOf() === localInput.valueOf();\n\t } else {\n\t inputMs = localInput.valueOf();\n\t return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n\t }\n\t }\n\t\n\t function isSameOrAfter (input, units) {\n\t return this.isSame(input, units) || this.isAfter(input,units);\n\t }\n\t\n\t function isSameOrBefore (input, units) {\n\t return this.isSame(input, units) || this.isBefore(input,units);\n\t }\n\t\n\t function diff (input, units, asFloat) {\n\t var that,\n\t zoneDelta,\n\t delta, output;\n\t\n\t if (!this.isValid()) {\n\t return NaN;\n\t }\n\t\n\t that = cloneWithOffset(input, this);\n\t\n\t if (!that.isValid()) {\n\t return NaN;\n\t }\n\t\n\t zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\t\n\t units = normalizeUnits(units);\n\t\n\t if (units === 'year' || units === 'month' || units === 'quarter') {\n\t output = monthDiff(this, that);\n\t if (units === 'quarter') {\n\t output = output / 3;\n\t } else if (units === 'year') {\n\t output = output / 12;\n\t }\n\t } else {\n\t delta = this - that;\n\t output = units === 'second' ? delta / 1e3 : // 1000\n\t units === 'minute' ? delta / 6e4 : // 1000 * 60\n\t units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n\t units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n\t units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n\t delta;\n\t }\n\t return asFloat ? output : absFloor(output);\n\t }\n\t\n\t function monthDiff (a, b) {\n\t // difference in months\n\t var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n\t // b is in (anchor - 1 month, anchor + 1 month)\n\t anchor = a.clone().add(wholeMonthDiff, 'months'),\n\t anchor2, adjust;\n\t\n\t if (b - anchor < 0) {\n\t anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n\t // linear across the month\n\t adjust = (b - anchor) / (anchor - anchor2);\n\t } else {\n\t anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n\t // linear across the month\n\t adjust = (b - anchor) / (anchor2 - anchor);\n\t }\n\t\n\t //check for negative zero, return zero if negative zero\n\t return -(wholeMonthDiff + adjust) || 0;\n\t }\n\t\n\t utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n\t utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\t\n\t function toString () {\n\t return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n\t }\n\t\n\t function moment_format__toISOString () {\n\t var m = this.clone().utc();\n\t if (0 < m.year() && m.year() <= 9999) {\n\t if (isFunction(Date.prototype.toISOString)) {\n\t // native implementation is ~50x faster, use it when we can\n\t return this.toDate().toISOString();\n\t } else {\n\t return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n\t }\n\t } else {\n\t return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n\t }\n\t }\n\t\n\t function format (inputString) {\n\t if (!inputString) {\n\t inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat;\n\t }\n\t var output = formatMoment(this, inputString);\n\t return this.localeData().postformat(output);\n\t }\n\t\n\t function from (time, withoutSuffix) {\n\t if (this.isValid() &&\n\t ((isMoment(time) && time.isValid()) ||\n\t local__createLocal(time).isValid())) {\n\t return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n\t } else {\n\t return this.localeData().invalidDate();\n\t }\n\t }\n\t\n\t function fromNow (withoutSuffix) {\n\t return this.from(local__createLocal(), withoutSuffix);\n\t }\n\t\n\t function to (time, withoutSuffix) {\n\t if (this.isValid() &&\n\t ((isMoment(time) && time.isValid()) ||\n\t local__createLocal(time).isValid())) {\n\t return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n\t } else {\n\t return this.localeData().invalidDate();\n\t }\n\t }\n\t\n\t function toNow (withoutSuffix) {\n\t return this.to(local__createLocal(), withoutSuffix);\n\t }\n\t\n\t // If passed a locale key, it will set the locale for this\n\t // instance. Otherwise, it will return the locale configuration\n\t // variables for this instance.\n\t function locale (key) {\n\t var newLocaleData;\n\t\n\t if (key === undefined) {\n\t return this._locale._abbr;\n\t } else {\n\t newLocaleData = locale_locales__getLocale(key);\n\t if (newLocaleData != null) {\n\t this._locale = newLocaleData;\n\t }\n\t return this;\n\t }\n\t }\n\t\n\t var lang = deprecate(\n\t 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n\t function (key) {\n\t if (key === undefined) {\n\t return this.localeData();\n\t } else {\n\t return this.locale(key);\n\t }\n\t }\n\t );\n\t\n\t function localeData () {\n\t return this._locale;\n\t }\n\t\n\t function startOf (units) {\n\t units = normalizeUnits(units);\n\t // the following switch intentionally omits break keywords\n\t // to utilize falling through the cases.\n\t switch (units) {\n\t case 'year':\n\t this.month(0);\n\t /* falls through */\n\t case 'quarter':\n\t case 'month':\n\t this.date(1);\n\t /* falls through */\n\t case 'week':\n\t case 'isoWeek':\n\t case 'day':\n\t case 'date':\n\t this.hours(0);\n\t /* falls through */\n\t case 'hour':\n\t this.minutes(0);\n\t /* falls through */\n\t case 'minute':\n\t this.seconds(0);\n\t /* falls through */\n\t case 'second':\n\t this.milliseconds(0);\n\t }\n\t\n\t // weeks are a special case\n\t if (units === 'week') {\n\t this.weekday(0);\n\t }\n\t if (units === 'isoWeek') {\n\t this.isoWeekday(1);\n\t }\n\t\n\t // quarters are also special\n\t if (units === 'quarter') {\n\t this.month(Math.floor(this.month() / 3) * 3);\n\t }\n\t\n\t return this;\n\t }\n\t\n\t function endOf (units) {\n\t units = normalizeUnits(units);\n\t if (units === undefined || units === 'millisecond') {\n\t return this;\n\t }\n\t\n\t // 'date' is an alias for 'day', so it should be considered as such.\n\t if (units === 'date') {\n\t units = 'day';\n\t }\n\t\n\t return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n\t }\n\t\n\t function to_type__valueOf () {\n\t return this._d.valueOf() - ((this._offset || 0) * 60000);\n\t }\n\t\n\t function unix () {\n\t return Math.floor(this.valueOf() / 1000);\n\t }\n\t\n\t function toDate () {\n\t return new Date(this.valueOf());\n\t }\n\t\n\t function toArray () {\n\t var m = this;\n\t return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n\t }\n\t\n\t function toObject () {\n\t var m = this;\n\t return {\n\t years: m.year(),\n\t months: m.month(),\n\t date: m.date(),\n\t hours: m.hours(),\n\t minutes: m.minutes(),\n\t seconds: m.seconds(),\n\t milliseconds: m.milliseconds()\n\t };\n\t }\n\t\n\t function toJSON () {\n\t // new Date(NaN).toJSON() === null\n\t return this.isValid() ? this.toISOString() : null;\n\t }\n\t\n\t function moment_valid__isValid () {\n\t return valid__isValid(this);\n\t }\n\t\n\t function parsingFlags () {\n\t return extend({}, getParsingFlags(this));\n\t }\n\t\n\t function invalidAt () {\n\t return getParsingFlags(this).overflow;\n\t }\n\t\n\t function creationData() {\n\t return {\n\t input: this._i,\n\t format: this._f,\n\t locale: this._locale,\n\t isUTC: this._isUTC,\n\t strict: this._strict\n\t };\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken(0, ['gg', 2], 0, function () {\n\t return this.weekYear() % 100;\n\t });\n\t\n\t addFormatToken(0, ['GG', 2], 0, function () {\n\t return this.isoWeekYear() % 100;\n\t });\n\t\n\t function addWeekYearFormatToken (token, getter) {\n\t addFormatToken(0, [token, token.length], 0, getter);\n\t }\n\t\n\t addWeekYearFormatToken('gggg', 'weekYear');\n\t addWeekYearFormatToken('ggggg', 'weekYear');\n\t addWeekYearFormatToken('GGGG', 'isoWeekYear');\n\t addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('weekYear', 'gg');\n\t addUnitAlias('isoWeekYear', 'GG');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('weekYear', 1);\n\t addUnitPriority('isoWeekYear', 1);\n\t\n\t\n\t // PARSING\n\t\n\t addRegexToken('G', matchSigned);\n\t addRegexToken('g', matchSigned);\n\t addRegexToken('GG', match1to2, match2);\n\t addRegexToken('gg', match1to2, match2);\n\t addRegexToken('GGGG', match1to4, match4);\n\t addRegexToken('gggg', match1to4, match4);\n\t addRegexToken('GGGGG', match1to6, match6);\n\t addRegexToken('ggggg', match1to6, match6);\n\t\n\t addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n\t week[token.substr(0, 2)] = toInt(input);\n\t });\n\t\n\t addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n\t week[token] = utils_hooks__hooks.parseTwoDigitYear(input);\n\t });\n\t\n\t // MOMENTS\n\t\n\t function getSetWeekYear (input) {\n\t return getSetWeekYearHelper.call(this,\n\t input,\n\t this.week(),\n\t this.weekday(),\n\t this.localeData()._week.dow,\n\t this.localeData()._week.doy);\n\t }\n\t\n\t function getSetISOWeekYear (input) {\n\t return getSetWeekYearHelper.call(this,\n\t input, this.isoWeek(), this.isoWeekday(), 1, 4);\n\t }\n\t\n\t function getISOWeeksInYear () {\n\t return weeksInYear(this.year(), 1, 4);\n\t }\n\t\n\t function getWeeksInYear () {\n\t var weekInfo = this.localeData()._week;\n\t return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n\t }\n\t\n\t function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n\t var weeksTarget;\n\t if (input == null) {\n\t return weekOfYear(this, dow, doy).year;\n\t } else {\n\t weeksTarget = weeksInYear(input, dow, doy);\n\t if (week > weeksTarget) {\n\t week = weeksTarget;\n\t }\n\t return setWeekAll.call(this, input, week, weekday, dow, doy);\n\t }\n\t }\n\t\n\t function setWeekAll(weekYear, week, weekday, dow, doy) {\n\t var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n\t date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\t\n\t this.year(date.getUTCFullYear());\n\t this.month(date.getUTCMonth());\n\t this.date(date.getUTCDate());\n\t return this;\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('Q', 0, 'Qo', 'quarter');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('quarter', 'Q');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('quarter', 7);\n\t\n\t // PARSING\n\t\n\t addRegexToken('Q', match1);\n\t addParseToken('Q', function (input, array) {\n\t array[MONTH] = (toInt(input) - 1) * 3;\n\t });\n\t\n\t // MOMENTS\n\t\n\t function getSetQuarter (input) {\n\t return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('D', ['DD', 2], 'Do', 'date');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('date', 'D');\n\t\n\t // PRIOROITY\n\t addUnitPriority('date', 9);\n\t\n\t // PARSING\n\t\n\t addRegexToken('D', match1to2);\n\t addRegexToken('DD', match1to2, match2);\n\t addRegexToken('Do', function (isStrict, locale) {\n\t return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n\t });\n\t\n\t addParseToken(['D', 'DD'], DATE);\n\t addParseToken('Do', function (input, array) {\n\t array[DATE] = toInt(input.match(match1to2)[0], 10);\n\t });\n\t\n\t // MOMENTS\n\t\n\t var getSetDayOfMonth = makeGetSet('Date', true);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('dayOfYear', 'DDD');\n\t\n\t // PRIORITY\n\t addUnitPriority('dayOfYear', 4);\n\t\n\t // PARSING\n\t\n\t addRegexToken('DDD', match1to3);\n\t addRegexToken('DDDD', match3);\n\t addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n\t config._dayOfYear = toInt(input);\n\t });\n\t\n\t // HELPERS\n\t\n\t // MOMENTS\n\t\n\t function getSetDayOfYear (input) {\n\t var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n\t return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('m', ['mm', 2], 0, 'minute');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('minute', 'm');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('minute', 14);\n\t\n\t // PARSING\n\t\n\t addRegexToken('m', match1to2);\n\t addRegexToken('mm', match1to2, match2);\n\t addParseToken(['m', 'mm'], MINUTE);\n\t\n\t // MOMENTS\n\t\n\t var getSetMinute = makeGetSet('Minutes', false);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('s', ['ss', 2], 0, 'second');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('second', 's');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('second', 15);\n\t\n\t // PARSING\n\t\n\t addRegexToken('s', match1to2);\n\t addRegexToken('ss', match1to2, match2);\n\t addParseToken(['s', 'ss'], SECOND);\n\t\n\t // MOMENTS\n\t\n\t var getSetSecond = makeGetSet('Seconds', false);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('S', 0, 0, function () {\n\t return ~~(this.millisecond() / 100);\n\t });\n\t\n\t addFormatToken(0, ['SS', 2], 0, function () {\n\t return ~~(this.millisecond() / 10);\n\t });\n\t\n\t addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n\t addFormatToken(0, ['SSSS', 4], 0, function () {\n\t return this.millisecond() * 10;\n\t });\n\t addFormatToken(0, ['SSSSS', 5], 0, function () {\n\t return this.millisecond() * 100;\n\t });\n\t addFormatToken(0, ['SSSSSS', 6], 0, function () {\n\t return this.millisecond() * 1000;\n\t });\n\t addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n\t return this.millisecond() * 10000;\n\t });\n\t addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n\t return this.millisecond() * 100000;\n\t });\n\t addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n\t return this.millisecond() * 1000000;\n\t });\n\t\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('millisecond', 'ms');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('millisecond', 16);\n\t\n\t // PARSING\n\t\n\t addRegexToken('S', match1to3, match1);\n\t addRegexToken('SS', match1to3, match2);\n\t addRegexToken('SSS', match1to3, match3);\n\t\n\t var token;\n\t for (token = 'SSSS'; token.length <= 9; token += 'S') {\n\t addRegexToken(token, matchUnsigned);\n\t }\n\t\n\t function parseMs(input, array) {\n\t array[MILLISECOND] = toInt(('0.' + input) * 1000);\n\t }\n\t\n\t for (token = 'S'; token.length <= 9; token += 'S') {\n\t addParseToken(token, parseMs);\n\t }\n\t // MOMENTS\n\t\n\t var getSetMillisecond = makeGetSet('Milliseconds', false);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('z', 0, 0, 'zoneAbbr');\n\t addFormatToken('zz', 0, 0, 'zoneName');\n\t\n\t // MOMENTS\n\t\n\t function getZoneAbbr () {\n\t return this._isUTC ? 'UTC' : '';\n\t }\n\t\n\t function getZoneName () {\n\t return this._isUTC ? 'Coordinated Universal Time' : '';\n\t }\n\t\n\t var momentPrototype__proto = Moment.prototype;\n\t\n\t momentPrototype__proto.add = add_subtract__add;\n\t momentPrototype__proto.calendar = moment_calendar__calendar;\n\t momentPrototype__proto.clone = clone;\n\t momentPrototype__proto.diff = diff;\n\t momentPrototype__proto.endOf = endOf;\n\t momentPrototype__proto.format = format;\n\t momentPrototype__proto.from = from;\n\t momentPrototype__proto.fromNow = fromNow;\n\t momentPrototype__proto.to = to;\n\t momentPrototype__proto.toNow = toNow;\n\t momentPrototype__proto.get = stringGet;\n\t momentPrototype__proto.invalidAt = invalidAt;\n\t momentPrototype__proto.isAfter = isAfter;\n\t momentPrototype__proto.isBefore = isBefore;\n\t momentPrototype__proto.isBetween = isBetween;\n\t momentPrototype__proto.isSame = isSame;\n\t momentPrototype__proto.isSameOrAfter = isSameOrAfter;\n\t momentPrototype__proto.isSameOrBefore = isSameOrBefore;\n\t momentPrototype__proto.isValid = moment_valid__isValid;\n\t momentPrototype__proto.lang = lang;\n\t momentPrototype__proto.locale = locale;\n\t momentPrototype__proto.localeData = localeData;\n\t momentPrototype__proto.max = prototypeMax;\n\t momentPrototype__proto.min = prototypeMin;\n\t momentPrototype__proto.parsingFlags = parsingFlags;\n\t momentPrototype__proto.set = stringSet;\n\t momentPrototype__proto.startOf = startOf;\n\t momentPrototype__proto.subtract = add_subtract__subtract;\n\t momentPrototype__proto.toArray = toArray;\n\t momentPrototype__proto.toObject = toObject;\n\t momentPrototype__proto.toDate = toDate;\n\t momentPrototype__proto.toISOString = moment_format__toISOString;\n\t momentPrototype__proto.toJSON = toJSON;\n\t momentPrototype__proto.toString = toString;\n\t momentPrototype__proto.unix = unix;\n\t momentPrototype__proto.valueOf = to_type__valueOf;\n\t momentPrototype__proto.creationData = creationData;\n\t\n\t // Year\n\t momentPrototype__proto.year = getSetYear;\n\t momentPrototype__proto.isLeapYear = getIsLeapYear;\n\t\n\t // Week Year\n\t momentPrototype__proto.weekYear = getSetWeekYear;\n\t momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\t\n\t // Quarter\n\t momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\t\n\t // Month\n\t momentPrototype__proto.month = getSetMonth;\n\t momentPrototype__proto.daysInMonth = getDaysInMonth;\n\t\n\t // Week\n\t momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n\t momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n\t momentPrototype__proto.weeksInYear = getWeeksInYear;\n\t momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\t\n\t // Day\n\t momentPrototype__proto.date = getSetDayOfMonth;\n\t momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n\t momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n\t momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n\t momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\t\n\t // Hour\n\t momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\t\n\t // Minute\n\t momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\t\n\t // Second\n\t momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\t\n\t // Millisecond\n\t momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\t\n\t // Offset\n\t momentPrototype__proto.utcOffset = getSetOffset;\n\t momentPrototype__proto.utc = setOffsetToUTC;\n\t momentPrototype__proto.local = setOffsetToLocal;\n\t momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n\t momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n\t momentPrototype__proto.isDST = isDaylightSavingTime;\n\t momentPrototype__proto.isLocal = isLocal;\n\t momentPrototype__proto.isUtcOffset = isUtcOffset;\n\t momentPrototype__proto.isUtc = isUtc;\n\t momentPrototype__proto.isUTC = isUtc;\n\t\n\t // Timezone\n\t momentPrototype__proto.zoneAbbr = getZoneAbbr;\n\t momentPrototype__proto.zoneName = getZoneName;\n\t\n\t // Deprecations\n\t momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n\t momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n\t momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n\t momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n\t momentPrototype__proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\t\n\t var momentPrototype = momentPrototype__proto;\n\t\n\t function moment__createUnix (input) {\n\t return local__createLocal(input * 1000);\n\t }\n\t\n\t function moment__createInZone () {\n\t return local__createLocal.apply(null, arguments).parseZone();\n\t }\n\t\n\t function preParsePostFormat (string) {\n\t return string;\n\t }\n\t\n\t var prototype__proto = Locale.prototype;\n\t\n\t prototype__proto.calendar = locale_calendar__calendar;\n\t prototype__proto.longDateFormat = longDateFormat;\n\t prototype__proto.invalidDate = invalidDate;\n\t prototype__proto.ordinal = ordinal;\n\t prototype__proto.preparse = preParsePostFormat;\n\t prototype__proto.postformat = preParsePostFormat;\n\t prototype__proto.relativeTime = relative__relativeTime;\n\t prototype__proto.pastFuture = pastFuture;\n\t prototype__proto.set = locale_set__set;\n\t\n\t // Month\n\t prototype__proto.months = localeMonths;\n\t prototype__proto.monthsShort = localeMonthsShort;\n\t prototype__proto.monthsParse = localeMonthsParse;\n\t prototype__proto.monthsRegex = monthsRegex;\n\t prototype__proto.monthsShortRegex = monthsShortRegex;\n\t\n\t // Week\n\t prototype__proto.week = localeWeek;\n\t prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n\t prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\t\n\t // Day of Week\n\t prototype__proto.weekdays = localeWeekdays;\n\t prototype__proto.weekdaysMin = localeWeekdaysMin;\n\t prototype__proto.weekdaysShort = localeWeekdaysShort;\n\t prototype__proto.weekdaysParse = localeWeekdaysParse;\n\t\n\t prototype__proto.weekdaysRegex = weekdaysRegex;\n\t prototype__proto.weekdaysShortRegex = weekdaysShortRegex;\n\t prototype__proto.weekdaysMinRegex = weekdaysMinRegex;\n\t\n\t // Hours\n\t prototype__proto.isPM = localeIsPM;\n\t prototype__proto.meridiem = localeMeridiem;\n\t\n\t function lists__get (format, index, field, setter) {\n\t var locale = locale_locales__getLocale();\n\t var utc = create_utc__createUTC().set(setter, index);\n\t return locale[field](utc, format);\n\t }\n\t\n\t function listMonthsImpl (format, index, field) {\n\t if (typeof format === 'number') {\n\t index = format;\n\t format = undefined;\n\t }\n\t\n\t format = format || '';\n\t\n\t if (index != null) {\n\t return lists__get(format, index, field, 'month');\n\t }\n\t\n\t var i;\n\t var out = [];\n\t for (i = 0; i < 12; i++) {\n\t out[i] = lists__get(format, i, field, 'month');\n\t }\n\t return out;\n\t }\n\t\n\t // ()\n\t // (5)\n\t // (fmt, 5)\n\t // (fmt)\n\t // (true)\n\t // (true, 5)\n\t // (true, fmt, 5)\n\t // (true, fmt)\n\t function listWeekdaysImpl (localeSorted, format, index, field) {\n\t if (typeof localeSorted === 'boolean') {\n\t if (typeof format === 'number') {\n\t index = format;\n\t format = undefined;\n\t }\n\t\n\t format = format || '';\n\t } else {\n\t format = localeSorted;\n\t index = format;\n\t localeSorted = false;\n\t\n\t if (typeof format === 'number') {\n\t index = format;\n\t format = undefined;\n\t }\n\t\n\t format = format || '';\n\t }\n\t\n\t var locale = locale_locales__getLocale(),\n\t shift = localeSorted ? locale._week.dow : 0;\n\t\n\t if (index != null) {\n\t return lists__get(format, (index + shift) % 7, field, 'day');\n\t }\n\t\n\t var i;\n\t var out = [];\n\t for (i = 0; i < 7; i++) {\n\t out[i] = lists__get(format, (i + shift) % 7, field, 'day');\n\t }\n\t return out;\n\t }\n\t\n\t function lists__listMonths (format, index) {\n\t return listMonthsImpl(format, index, 'months');\n\t }\n\t\n\t function lists__listMonthsShort (format, index) {\n\t return listMonthsImpl(format, index, 'monthsShort');\n\t }\n\t\n\t function lists__listWeekdays (localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n\t }\n\t\n\t function lists__listWeekdaysShort (localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n\t }\n\t\n\t function lists__listWeekdaysMin (localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n\t }\n\t\n\t locale_locales__getSetGlobalLocale('en', {\n\t ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n\t ordinal : function (number) {\n\t var b = number % 10,\n\t output = (toInt(number % 100 / 10) === 1) ? 'th' :\n\t (b === 1) ? 'st' :\n\t (b === 2) ? 'nd' :\n\t (b === 3) ? 'rd' : 'th';\n\t return number + output;\n\t }\n\t });\n\t\n\t // Side effect imports\n\t utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n\t utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\t\n\t var mathAbs = Math.abs;\n\t\n\t function duration_abs__abs () {\n\t var data = this._data;\n\t\n\t this._milliseconds = mathAbs(this._milliseconds);\n\t this._days = mathAbs(this._days);\n\t this._months = mathAbs(this._months);\n\t\n\t data.milliseconds = mathAbs(data.milliseconds);\n\t data.seconds = mathAbs(data.seconds);\n\t data.minutes = mathAbs(data.minutes);\n\t data.hours = mathAbs(data.hours);\n\t data.months = mathAbs(data.months);\n\t data.years = mathAbs(data.years);\n\t\n\t return this;\n\t }\n\t\n\t function duration_add_subtract__addSubtract (duration, input, value, direction) {\n\t var other = create__createDuration(input, value);\n\t\n\t duration._milliseconds += direction * other._milliseconds;\n\t duration._days += direction * other._days;\n\t duration._months += direction * other._months;\n\t\n\t return duration._bubble();\n\t }\n\t\n\t // supports only 2.0-style add(1, 's') or add(duration)\n\t function duration_add_subtract__add (input, value) {\n\t return duration_add_subtract__addSubtract(this, input, value, 1);\n\t }\n\t\n\t // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\t function duration_add_subtract__subtract (input, value) {\n\t return duration_add_subtract__addSubtract(this, input, value, -1);\n\t }\n\t\n\t function absCeil (number) {\n\t if (number < 0) {\n\t return Math.floor(number);\n\t } else {\n\t return Math.ceil(number);\n\t }\n\t }\n\t\n\t function bubble () {\n\t var milliseconds = this._milliseconds;\n\t var days = this._days;\n\t var months = this._months;\n\t var data = this._data;\n\t var seconds, minutes, hours, years, monthsFromDays;\n\t\n\t // if we have a mix of positive and negative values, bubble down first\n\t // check: https://github.com/moment/moment/issues/2166\n\t if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n\t (milliseconds <= 0 && days <= 0 && months <= 0))) {\n\t milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n\t days = 0;\n\t months = 0;\n\t }\n\t\n\t // The following code bubbles up values, see the tests for\n\t // examples of what that means.\n\t data.milliseconds = milliseconds % 1000;\n\t\n\t seconds = absFloor(milliseconds / 1000);\n\t data.seconds = seconds % 60;\n\t\n\t minutes = absFloor(seconds / 60);\n\t data.minutes = minutes % 60;\n\t\n\t hours = absFloor(minutes / 60);\n\t data.hours = hours % 24;\n\t\n\t days += absFloor(hours / 24);\n\t\n\t // convert days to months\n\t monthsFromDays = absFloor(daysToMonths(days));\n\t months += monthsFromDays;\n\t days -= absCeil(monthsToDays(monthsFromDays));\n\t\n\t // 12 months -> 1 year\n\t years = absFloor(months / 12);\n\t months %= 12;\n\t\n\t data.days = days;\n\t data.months = months;\n\t data.years = years;\n\t\n\t return this;\n\t }\n\t\n\t function daysToMonths (days) {\n\t // 400 years have 146097 days (taking into account leap year rules)\n\t // 400 years have 12 months === 4800\n\t return days * 4800 / 146097;\n\t }\n\t\n\t function monthsToDays (months) {\n\t // the reverse of daysToMonths\n\t return months * 146097 / 4800;\n\t }\n\t\n\t function as (units) {\n\t var days;\n\t var months;\n\t var milliseconds = this._milliseconds;\n\t\n\t units = normalizeUnits(units);\n\t\n\t if (units === 'month' || units === 'year') {\n\t days = this._days + milliseconds / 864e5;\n\t months = this._months + daysToMonths(days);\n\t return units === 'month' ? months : months / 12;\n\t } else {\n\t // handle milliseconds separately because of floating point math errors (issue #1867)\n\t days = this._days + Math.round(monthsToDays(this._months));\n\t switch (units) {\n\t case 'week' : return days / 7 + milliseconds / 6048e5;\n\t case 'day' : return days + milliseconds / 864e5;\n\t case 'hour' : return days * 24 + milliseconds / 36e5;\n\t case 'minute' : return days * 1440 + milliseconds / 6e4;\n\t case 'second' : return days * 86400 + milliseconds / 1000;\n\t // Math.floor prevents floating point math errors here\n\t case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n\t default: throw new Error('Unknown unit ' + units);\n\t }\n\t }\n\t }\n\t\n\t // TODO: Use this.as('ms')?\n\t function duration_as__valueOf () {\n\t return (\n\t this._milliseconds +\n\t this._days * 864e5 +\n\t (this._months % 12) * 2592e6 +\n\t toInt(this._months / 12) * 31536e6\n\t );\n\t }\n\t\n\t function makeAs (alias) {\n\t return function () {\n\t return this.as(alias);\n\t };\n\t }\n\t\n\t var asMilliseconds = makeAs('ms');\n\t var asSeconds = makeAs('s');\n\t var asMinutes = makeAs('m');\n\t var asHours = makeAs('h');\n\t var asDays = makeAs('d');\n\t var asWeeks = makeAs('w');\n\t var asMonths = makeAs('M');\n\t var asYears = makeAs('y');\n\t\n\t function duration_get__get (units) {\n\t units = normalizeUnits(units);\n\t return this[units + 's']();\n\t }\n\t\n\t function makeGetter(name) {\n\t return function () {\n\t return this._data[name];\n\t };\n\t }\n\t\n\t var milliseconds = makeGetter('milliseconds');\n\t var seconds = makeGetter('seconds');\n\t var minutes = makeGetter('minutes');\n\t var hours = makeGetter('hours');\n\t var days = makeGetter('days');\n\t var months = makeGetter('months');\n\t var years = makeGetter('years');\n\t\n\t function weeks () {\n\t return absFloor(this.days() / 7);\n\t }\n\t\n\t var round = Math.round;\n\t var thresholds = {\n\t s: 45, // seconds to minute\n\t m: 45, // minutes to hour\n\t h: 22, // hours to day\n\t d: 26, // days to month\n\t M: 11 // months to year\n\t };\n\t\n\t // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\t function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n\t return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n\t }\n\t\n\t function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n\t var duration = create__createDuration(posNegDuration).abs();\n\t var seconds = round(duration.as('s'));\n\t var minutes = round(duration.as('m'));\n\t var hours = round(duration.as('h'));\n\t var days = round(duration.as('d'));\n\t var months = round(duration.as('M'));\n\t var years = round(duration.as('y'));\n\t\n\t var a = seconds < thresholds.s && ['s', seconds] ||\n\t minutes <= 1 && ['m'] ||\n\t minutes < thresholds.m && ['mm', minutes] ||\n\t hours <= 1 && ['h'] ||\n\t hours < thresholds.h && ['hh', hours] ||\n\t days <= 1 && ['d'] ||\n\t days < thresholds.d && ['dd', days] ||\n\t months <= 1 && ['M'] ||\n\t months < thresholds.M && ['MM', months] ||\n\t years <= 1 && ['y'] || ['yy', years];\n\t\n\t a[2] = withoutSuffix;\n\t a[3] = +posNegDuration > 0;\n\t a[4] = locale;\n\t return substituteTimeAgo.apply(null, a);\n\t }\n\t\n\t // This function allows you to set the rounding function for relative time strings\n\t function duration_humanize__getSetRelativeTimeRounding (roundingFunction) {\n\t if (roundingFunction === undefined) {\n\t return round;\n\t }\n\t if (typeof(roundingFunction) === 'function') {\n\t round = roundingFunction;\n\t return true;\n\t }\n\t return false;\n\t }\n\t\n\t // This function allows you to set a threshold for relative time strings\n\t function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {\n\t if (thresholds[threshold] === undefined) {\n\t return false;\n\t }\n\t if (limit === undefined) {\n\t return thresholds[threshold];\n\t }\n\t thresholds[threshold] = limit;\n\t return true;\n\t }\n\t\n\t function humanize (withSuffix) {\n\t var locale = this.localeData();\n\t var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\t\n\t if (withSuffix) {\n\t output = locale.pastFuture(+this, output);\n\t }\n\t\n\t return locale.postformat(output);\n\t }\n\t\n\t var iso_string__abs = Math.abs;\n\t\n\t function iso_string__toISOString() {\n\t // for ISO strings we do not use the normal bubbling rules:\n\t // * milliseconds bubble up until they become hours\n\t // * days do not bubble at all\n\t // * months bubble up until they become years\n\t // This is because there is no context-free conversion between hours and days\n\t // (think of clock changes)\n\t // and also not between days and months (28-31 days per month)\n\t var seconds = iso_string__abs(this._milliseconds) / 1000;\n\t var days = iso_string__abs(this._days);\n\t var months = iso_string__abs(this._months);\n\t var minutes, hours, years;\n\t\n\t // 3600 seconds -> 60 minutes -> 1 hour\n\t minutes = absFloor(seconds / 60);\n\t hours = absFloor(minutes / 60);\n\t seconds %= 60;\n\t minutes %= 60;\n\t\n\t // 12 months -> 1 year\n\t years = absFloor(months / 12);\n\t months %= 12;\n\t\n\t\n\t // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\t var Y = years;\n\t var M = months;\n\t var D = days;\n\t var h = hours;\n\t var m = minutes;\n\t var s = seconds;\n\t var total = this.asSeconds();\n\t\n\t if (!total) {\n\t // this is the same as C#'s (Noda) and python (isodate)...\n\t // but not other JS (goog.date)\n\t return 'P0D';\n\t }\n\t\n\t return (total < 0 ? '-' : '') +\n\t 'P' +\n\t (Y ? Y + 'Y' : '') +\n\t (M ? M + 'M' : '') +\n\t (D ? D + 'D' : '') +\n\t ((h || m || s) ? 'T' : '') +\n\t (h ? h + 'H' : '') +\n\t (m ? m + 'M' : '') +\n\t (s ? s + 'S' : '');\n\t }\n\t\n\t var duration_prototype__proto = Duration.prototype;\n\t\n\t duration_prototype__proto.abs = duration_abs__abs;\n\t duration_prototype__proto.add = duration_add_subtract__add;\n\t duration_prototype__proto.subtract = duration_add_subtract__subtract;\n\t duration_prototype__proto.as = as;\n\t duration_prototype__proto.asMilliseconds = asMilliseconds;\n\t duration_prototype__proto.asSeconds = asSeconds;\n\t duration_prototype__proto.asMinutes = asMinutes;\n\t duration_prototype__proto.asHours = asHours;\n\t duration_prototype__proto.asDays = asDays;\n\t duration_prototype__proto.asWeeks = asWeeks;\n\t duration_prototype__proto.asMonths = asMonths;\n\t duration_prototype__proto.asYears = asYears;\n\t duration_prototype__proto.valueOf = duration_as__valueOf;\n\t duration_prototype__proto._bubble = bubble;\n\t duration_prototype__proto.get = duration_get__get;\n\t duration_prototype__proto.milliseconds = milliseconds;\n\t duration_prototype__proto.seconds = seconds;\n\t duration_prototype__proto.minutes = minutes;\n\t duration_prototype__proto.hours = hours;\n\t duration_prototype__proto.days = days;\n\t duration_prototype__proto.weeks = weeks;\n\t duration_prototype__proto.months = months;\n\t duration_prototype__proto.years = years;\n\t duration_prototype__proto.humanize = humanize;\n\t duration_prototype__proto.toISOString = iso_string__toISOString;\n\t duration_prototype__proto.toString = iso_string__toISOString;\n\t duration_prototype__proto.toJSON = iso_string__toISOString;\n\t duration_prototype__proto.locale = locale;\n\t duration_prototype__proto.localeData = localeData;\n\t\n\t // Deprecations\n\t duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n\t duration_prototype__proto.lang = lang;\n\t\n\t // Side effect imports\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('X', 0, 0, 'unix');\n\t addFormatToken('x', 0, 0, 'valueOf');\n\t\n\t // PARSING\n\t\n\t addRegexToken('x', matchSigned);\n\t addRegexToken('X', matchTimestamp);\n\t addParseToken('X', function (input, array, config) {\n\t config._d = new Date(parseFloat(input, 10) * 1000);\n\t });\n\t addParseToken('x', function (input, array, config) {\n\t config._d = new Date(toInt(input));\n\t });\n\t\n\t // Side effect imports\n\t\n\t\n\t utils_hooks__hooks.version = '2.14.1';\n\t\n\t setHookCallback(local__createLocal);\n\t\n\t utils_hooks__hooks.fn = momentPrototype;\n\t utils_hooks__hooks.min = min;\n\t utils_hooks__hooks.max = max;\n\t utils_hooks__hooks.now = now;\n\t utils_hooks__hooks.utc = create_utc__createUTC;\n\t utils_hooks__hooks.unix = moment__createUnix;\n\t utils_hooks__hooks.months = lists__listMonths;\n\t utils_hooks__hooks.isDate = isDate;\n\t utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n\t utils_hooks__hooks.invalid = valid__createInvalid;\n\t utils_hooks__hooks.duration = create__createDuration;\n\t utils_hooks__hooks.isMoment = isMoment;\n\t utils_hooks__hooks.weekdays = lists__listWeekdays;\n\t utils_hooks__hooks.parseZone = moment__createInZone;\n\t utils_hooks__hooks.localeData = locale_locales__getLocale;\n\t utils_hooks__hooks.isDuration = isDuration;\n\t utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n\t utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n\t utils_hooks__hooks.defineLocale = defineLocale;\n\t utils_hooks__hooks.updateLocale = updateLocale;\n\t utils_hooks__hooks.locales = locale_locales__listLocales;\n\t utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n\t utils_hooks__hooks.normalizeUnits = normalizeUnits;\n\t utils_hooks__hooks.relativeTimeRounding = duration_humanize__getSetRelativeTimeRounding;\n\t utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n\t utils_hooks__hooks.calendarFormat = getCalendarFormat;\n\t utils_hooks__hooks.prototype = momentPrototype;\n\t\n\t var _moment = utils_hooks__hooks;\n\t\n\t return _moment;\n\t\n\t}));\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48)(module)))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar freeGlobal = __webpack_require__(68);\n\t\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\t\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\t\n\tmodule.exports = root;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\t\n\tmodule.exports = isArray;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\t\n\tmodule.exports = isObject;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.mergeOptions = mergeOptions;\n\t\n\tvar _merge = __webpack_require__(338);\n\t\n\tvar _merge2 = _interopRequireDefault(_merge);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction mergeOptions(obj, src) {\n\t return (0, _merge2.default)(obj, src);\n\t}\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * @namespace Chart\n\t */\n\tvar Chart = __webpack_require__(212)();\n\t\n\t__webpack_require__(211)(Chart);\n\t__webpack_require__(207)(Chart);\n\t__webpack_require__(210)(Chart);\n\t__webpack_require__(206)(Chart);\n\t__webpack_require__(208)(Chart);\n\t__webpack_require__(209)(Chart);\n\t__webpack_require__(213)(Chart);\n\t__webpack_require__(217)(Chart);\n\t__webpack_require__(215)(Chart);\n\t__webpack_require__(216)(Chart);\n\t__webpack_require__(218)(Chart);\n\t__webpack_require__(214)(Chart);\n\t__webpack_require__(219)(Chart);\n\t\n\t__webpack_require__(220)(Chart);\n\t__webpack_require__(221)(Chart);\n\t__webpack_require__(222)(Chart);\n\t__webpack_require__(223)(Chart);\n\t\n\t__webpack_require__(226)(Chart);\n\t__webpack_require__(224)(Chart);\n\t__webpack_require__(225)(Chart);\n\t__webpack_require__(227)(Chart);\n\t__webpack_require__(228)(Chart);\n\t__webpack_require__(229)(Chart);\n\t\n\t// Controllers must be loaded after elements\n\t// See Chart.core.datasetController.dataElementType\n\t__webpack_require__(200)(Chart);\n\t__webpack_require__(201)(Chart);\n\t__webpack_require__(202)(Chart);\n\t__webpack_require__(203)(Chart);\n\t__webpack_require__(204)(Chart);\n\t__webpack_require__(205)(Chart);\n\t\n\t__webpack_require__(193)(Chart);\n\t__webpack_require__(194)(Chart);\n\t__webpack_require__(195)(Chart);\n\t__webpack_require__(196)(Chart);\n\t__webpack_require__(197)(Chart);\n\t__webpack_require__(198)(Chart);\n\t__webpack_require__(199)(Chart);\n\t\n\twindow.Chart = module.exports = Chart;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsNative = __webpack_require__(254),\n\t getValue = __webpack_require__(288);\n\t\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\t\n\tmodule.exports = getNative;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/*!\n\t * Vue.js v1.0.26\n\t * (c) 2016 Evan You\n\t * Released under the MIT License.\n\t */\n\t'use strict';\n\t\n\tfunction set(obj, key, val) {\n\t if (hasOwn(obj, key)) {\n\t obj[key] = val;\n\t return;\n\t }\n\t if (obj._isVue) {\n\t set(obj._data, key, val);\n\t return;\n\t }\n\t var ob = obj.__ob__;\n\t if (!ob) {\n\t obj[key] = val;\n\t return;\n\t }\n\t ob.convert(key, val);\n\t ob.dep.notify();\n\t if (ob.vms) {\n\t var i = ob.vms.length;\n\t while (i--) {\n\t var vm = ob.vms[i];\n\t vm._proxy(key);\n\t vm._digest();\n\t }\n\t }\n\t return val;\n\t}\n\t\n\t/**\n\t * Delete a property and trigger change if necessary.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t */\n\t\n\tfunction del(obj, key) {\n\t if (!hasOwn(obj, key)) {\n\t return;\n\t }\n\t delete obj[key];\n\t var ob = obj.__ob__;\n\t if (!ob) {\n\t if (obj._isVue) {\n\t delete obj._data[key];\n\t obj._digest();\n\t }\n\t return;\n\t }\n\t ob.dep.notify();\n\t if (ob.vms) {\n\t var i = ob.vms.length;\n\t while (i--) {\n\t var vm = ob.vms[i];\n\t vm._unproxy(key);\n\t vm._digest();\n\t }\n\t }\n\t}\n\t\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\t/**\n\t * Check whether the object has the property.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t * @return {Boolean}\n\t */\n\t\n\tfunction hasOwn(obj, key) {\n\t return hasOwnProperty.call(obj, key);\n\t}\n\t\n\t/**\n\t * Check if an expression is a literal value.\n\t *\n\t * @param {String} exp\n\t * @return {Boolean}\n\t */\n\t\n\tvar literalValueRE = /^\\s?(true|false|-?[\\d\\.]+|'[^']*'|\"[^\"]*\")\\s?$/;\n\t\n\tfunction isLiteral(exp) {\n\t return literalValueRE.test(exp);\n\t}\n\t\n\t/**\n\t * Check if a string starts with $ or _\n\t *\n\t * @param {String} str\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isReserved(str) {\n\t var c = (str + '').charCodeAt(0);\n\t return c === 0x24 || c === 0x5F;\n\t}\n\t\n\t/**\n\t * Guard text output, make sure undefined outputs\n\t * empty string\n\t *\n\t * @param {*} value\n\t * @return {String}\n\t */\n\t\n\tfunction _toString(value) {\n\t return value == null ? '' : value.toString();\n\t}\n\t\n\t/**\n\t * Check and convert possible numeric strings to numbers\n\t * before setting back to data\n\t *\n\t * @param {*} value\n\t * @return {*|Number}\n\t */\n\t\n\tfunction toNumber(value) {\n\t if (typeof value !== 'string') {\n\t return value;\n\t } else {\n\t var parsed = Number(value);\n\t return isNaN(parsed) ? value : parsed;\n\t }\n\t}\n\t\n\t/**\n\t * Convert string boolean literals into real booleans.\n\t *\n\t * @param {*} value\n\t * @return {*|Boolean}\n\t */\n\t\n\tfunction toBoolean(value) {\n\t return value === 'true' ? true : value === 'false' ? false : value;\n\t}\n\t\n\t/**\n\t * Strip quotes from a string\n\t *\n\t * @param {String} str\n\t * @return {String | false}\n\t */\n\t\n\tfunction stripQuotes(str) {\n\t var a = str.charCodeAt(0);\n\t var b = str.charCodeAt(str.length - 1);\n\t return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n\t}\n\t\n\t/**\n\t * Camelize a hyphen-delmited string.\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t */\n\t\n\tvar camelizeRE = /-(\\w)/g;\n\t\n\tfunction camelize(str) {\n\t return str.replace(camelizeRE, toUpper);\n\t}\n\t\n\tfunction toUpper(_, c) {\n\t return c ? c.toUpperCase() : '';\n\t}\n\t\n\t/**\n\t * Hyphenate a camelCase string.\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t */\n\t\n\tvar hyphenateRE = /([a-z\\d])([A-Z])/g;\n\t\n\tfunction hyphenate(str) {\n\t return str.replace(hyphenateRE, '$1-$2').toLowerCase();\n\t}\n\t\n\t/**\n\t * Converts hyphen/underscore/slash delimitered names into\n\t * camelized classNames.\n\t *\n\t * e.g. my-component => MyComponent\n\t * some_else => SomeElse\n\t * some/comp => SomeComp\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t */\n\t\n\tvar classifyRE = /(?:^|[-_\\/])(\\w)/g;\n\t\n\tfunction classify(str) {\n\t return str.replace(classifyRE, toUpper);\n\t}\n\t\n\t/**\n\t * Simple bind, faster than native\n\t *\n\t * @param {Function} fn\n\t * @param {Object} ctx\n\t * @return {Function}\n\t */\n\t\n\tfunction bind(fn, ctx) {\n\t return function (a) {\n\t var l = arguments.length;\n\t return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);\n\t };\n\t}\n\t\n\t/**\n\t * Convert an Array-like object to a real Array.\n\t *\n\t * @param {Array-like} list\n\t * @param {Number} [start] - start index\n\t * @return {Array}\n\t */\n\t\n\tfunction toArray(list, start) {\n\t start = start || 0;\n\t var i = list.length - start;\n\t var ret = new Array(i);\n\t while (i--) {\n\t ret[i] = list[i + start];\n\t }\n\t return ret;\n\t}\n\t\n\t/**\n\t * Mix properties into target object.\n\t *\n\t * @param {Object} to\n\t * @param {Object} from\n\t */\n\t\n\tfunction extend(to, from) {\n\t var keys = Object.keys(from);\n\t var i = keys.length;\n\t while (i--) {\n\t to[keys[i]] = from[keys[i]];\n\t }\n\t return to;\n\t}\n\t\n\t/**\n\t * Quick object check - this is primarily used to tell\n\t * Objects from primitive values when we know the value\n\t * is a JSON-compliant type.\n\t *\n\t * @param {*} obj\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isObject(obj) {\n\t return obj !== null && typeof obj === 'object';\n\t}\n\t\n\t/**\n\t * Strict object type check. Only returns true\n\t * for plain JavaScript objects.\n\t *\n\t * @param {*} obj\n\t * @return {Boolean}\n\t */\n\t\n\tvar toString = Object.prototype.toString;\n\tvar OBJECT_STRING = '[object Object]';\n\t\n\tfunction isPlainObject(obj) {\n\t return toString.call(obj) === OBJECT_STRING;\n\t}\n\t\n\t/**\n\t * Array type check.\n\t *\n\t * @param {*} obj\n\t * @return {Boolean}\n\t */\n\t\n\tvar isArray = Array.isArray;\n\t\n\t/**\n\t * Define a property.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t * @param {*} val\n\t * @param {Boolean} [enumerable]\n\t */\n\t\n\tfunction def(obj, key, val, enumerable) {\n\t Object.defineProperty(obj, key, {\n\t value: val,\n\t enumerable: !!enumerable,\n\t writable: true,\n\t configurable: true\n\t });\n\t}\n\t\n\t/**\n\t * Debounce a function so it only gets called after the\n\t * input stops arriving after the given wait period.\n\t *\n\t * @param {Function} func\n\t * @param {Number} wait\n\t * @return {Function} - the debounced function\n\t */\n\t\n\tfunction _debounce(func, wait) {\n\t var timeout, args, context, timestamp, result;\n\t var later = function later() {\n\t var last = Date.now() - timestamp;\n\t if (last < wait && last >= 0) {\n\t timeout = setTimeout(later, wait - last);\n\t } else {\n\t timeout = null;\n\t result = func.apply(context, args);\n\t if (!timeout) context = args = null;\n\t }\n\t };\n\t return function () {\n\t context = this;\n\t args = arguments;\n\t timestamp = Date.now();\n\t if (!timeout) {\n\t timeout = setTimeout(later, wait);\n\t }\n\t return result;\n\t };\n\t}\n\t\n\t/**\n\t * Manual indexOf because it's slightly faster than\n\t * native.\n\t *\n\t * @param {Array} arr\n\t * @param {*} obj\n\t */\n\t\n\tfunction indexOf(arr, obj) {\n\t var i = arr.length;\n\t while (i--) {\n\t if (arr[i] === obj) return i;\n\t }\n\t return -1;\n\t}\n\t\n\t/**\n\t * Make a cancellable version of an async callback.\n\t *\n\t * @param {Function} fn\n\t * @return {Function}\n\t */\n\t\n\tfunction cancellable(fn) {\n\t var cb = function cb() {\n\t if (!cb.cancelled) {\n\t return fn.apply(this, arguments);\n\t }\n\t };\n\t cb.cancel = function () {\n\t cb.cancelled = true;\n\t };\n\t return cb;\n\t}\n\t\n\t/**\n\t * Check if two values are loosely equal - that is,\n\t * if they are plain objects, do they have the same shape?\n\t *\n\t * @param {*} a\n\t * @param {*} b\n\t * @return {Boolean}\n\t */\n\t\n\tfunction looseEqual(a, b) {\n\t /* eslint-disable eqeqeq */\n\t return a == b || (isObject(a) && isObject(b) ? JSON.stringify(a) === JSON.stringify(b) : false);\n\t /* eslint-enable eqeqeq */\n\t}\n\t\n\tvar hasProto = ('__proto__' in {});\n\t\n\t// Browser environment sniffing\n\tvar inBrowser = typeof window !== 'undefined' && Object.prototype.toString.call(window) !== '[object Object]';\n\t\n\t// detect devtools\n\tvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\t\n\t// UA sniffing for working around browser-specific quirks\n\tvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\n\tvar isIE = UA && UA.indexOf('trident') > 0;\n\tvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\n\tvar isAndroid = UA && UA.indexOf('android') > 0;\n\tvar isIos = UA && /(iphone|ipad|ipod|ios)/i.test(UA);\n\tvar iosVersionMatch = isIos && UA.match(/os ([\\d_]+)/);\n\tvar iosVersion = iosVersionMatch && iosVersionMatch[1].split('_');\n\t\n\t// detecting iOS UIWebView by indexedDB\n\tvar hasMutationObserverBug = iosVersion && Number(iosVersion[0]) >= 9 && Number(iosVersion[1]) >= 3 && !window.indexedDB;\n\t\n\tvar transitionProp = undefined;\n\tvar transitionEndEvent = undefined;\n\tvar animationProp = undefined;\n\tvar animationEndEvent = undefined;\n\t\n\t// Transition property/event sniffing\n\tif (inBrowser && !isIE9) {\n\t var isWebkitTrans = window.ontransitionend === undefined && window.onwebkittransitionend !== undefined;\n\t var isWebkitAnim = window.onanimationend === undefined && window.onwebkitanimationend !== undefined;\n\t transitionProp = isWebkitTrans ? 'WebkitTransition' : 'transition';\n\t transitionEndEvent = isWebkitTrans ? 'webkitTransitionEnd' : 'transitionend';\n\t animationProp = isWebkitAnim ? 'WebkitAnimation' : 'animation';\n\t animationEndEvent = isWebkitAnim ? 'webkitAnimationEnd' : 'animationend';\n\t}\n\t\n\t/**\n\t * Defer a task to execute it asynchronously. Ideally this\n\t * should be executed as a microtask, so we leverage\n\t * MutationObserver if it's available, and fallback to\n\t * setTimeout(0).\n\t *\n\t * @param {Function} cb\n\t * @param {Object} ctx\n\t */\n\t\n\tvar nextTick = (function () {\n\t var callbacks = [];\n\t var pending = false;\n\t var timerFunc;\n\t function nextTickHandler() {\n\t pending = false;\n\t var copies = callbacks.slice(0);\n\t callbacks = [];\n\t for (var i = 0; i < copies.length; i++) {\n\t copies[i]();\n\t }\n\t }\n\t\n\t /* istanbul ignore if */\n\t if (typeof MutationObserver !== 'undefined' && !hasMutationObserverBug) {\n\t var counter = 1;\n\t var observer = new MutationObserver(nextTickHandler);\n\t var textNode = document.createTextNode(counter);\n\t observer.observe(textNode, {\n\t characterData: true\n\t });\n\t timerFunc = function () {\n\t counter = (counter + 1) % 2;\n\t textNode.data = counter;\n\t };\n\t } else {\n\t // webpack attempts to inject a shim for setImmediate\n\t // if it is used as a global, so we have to work around that to\n\t // avoid bundling unnecessary code.\n\t var context = inBrowser ? window : typeof global !== 'undefined' ? global : {};\n\t timerFunc = context.setImmediate || setTimeout;\n\t }\n\t return function (cb, ctx) {\n\t var func = ctx ? function () {\n\t cb.call(ctx);\n\t } : cb;\n\t callbacks.push(func);\n\t if (pending) return;\n\t pending = true;\n\t timerFunc(nextTickHandler, 0);\n\t };\n\t})();\n\t\n\tvar _Set = undefined;\n\t/* istanbul ignore if */\n\tif (typeof Set !== 'undefined' && Set.toString().match(/native code/)) {\n\t // use native Set when available.\n\t _Set = Set;\n\t} else {\n\t // a non-standard Set polyfill that only works with primitive keys.\n\t _Set = function () {\n\t this.set = Object.create(null);\n\t };\n\t _Set.prototype.has = function (key) {\n\t return this.set[key] !== undefined;\n\t };\n\t _Set.prototype.add = function (key) {\n\t this.set[key] = 1;\n\t };\n\t _Set.prototype.clear = function () {\n\t this.set = Object.create(null);\n\t };\n\t}\n\t\n\tfunction Cache(limit) {\n\t this.size = 0;\n\t this.limit = limit;\n\t this.head = this.tail = undefined;\n\t this._keymap = Object.create(null);\n\t}\n\t\n\tvar p = Cache.prototype;\n\t\n\t/**\n\t * Put into the cache associated with .\n\t * Returns the entry which was removed to make room for\n\t * the new entry. Otherwise undefined is returned.\n\t * (i.e. if there was enough room already).\n\t *\n\t * @param {String} key\n\t * @param {*} value\n\t * @return {Entry|undefined}\n\t */\n\t\n\tp.put = function (key, value) {\n\t var removed;\n\t\n\t var entry = this.get(key, true);\n\t if (!entry) {\n\t if (this.size === this.limit) {\n\t removed = this.shift();\n\t }\n\t entry = {\n\t key: key\n\t };\n\t this._keymap[key] = entry;\n\t if (this.tail) {\n\t this.tail.newer = entry;\n\t entry.older = this.tail;\n\t } else {\n\t this.head = entry;\n\t }\n\t this.tail = entry;\n\t this.size++;\n\t }\n\t entry.value = value;\n\t\n\t return removed;\n\t};\n\t\n\t/**\n\t * Purge the least recently used (oldest) entry from the\n\t * cache. Returns the removed entry or undefined if the\n\t * cache was empty.\n\t */\n\t\n\tp.shift = function () {\n\t var entry = this.head;\n\t if (entry) {\n\t this.head = this.head.newer;\n\t this.head.older = undefined;\n\t entry.newer = entry.older = undefined;\n\t this._keymap[entry.key] = undefined;\n\t this.size--;\n\t }\n\t return entry;\n\t};\n\t\n\t/**\n\t * Get and register recent use of . Returns the value\n\t * associated with or undefined if not in cache.\n\t *\n\t * @param {String} key\n\t * @param {Boolean} returnEntry\n\t * @return {Entry|*}\n\t */\n\t\n\tp.get = function (key, returnEntry) {\n\t var entry = this._keymap[key];\n\t if (entry === undefined) return;\n\t if (entry === this.tail) {\n\t return returnEntry ? entry : entry.value;\n\t }\n\t // HEAD--------------TAIL\n\t // <.older .newer>\n\t // <--- add direction --\n\t // A B C E\n\t if (entry.newer) {\n\t if (entry === this.head) {\n\t this.head = entry.newer;\n\t }\n\t entry.newer.older = entry.older; // C <-- E.\n\t }\n\t if (entry.older) {\n\t entry.older.newer = entry.newer; // C. --> E\n\t }\n\t entry.newer = undefined; // D --x\n\t entry.older = this.tail; // D. --> E\n\t if (this.tail) {\n\t this.tail.newer = entry; // E. <-- D\n\t }\n\t this.tail = entry;\n\t return returnEntry ? entry : entry.value;\n\t};\n\t\n\tvar cache$1 = new Cache(1000);\n\tvar filterTokenRE = /[^\\s'\"]+|'[^']*'|\"[^\"]*\"/g;\n\tvar reservedArgRE = /^in$|^-?\\d+/;\n\t\n\t/**\n\t * Parser state\n\t */\n\t\n\tvar str;\n\tvar dir;\n\tvar c;\n\tvar prev;\n\tvar i;\n\tvar l;\n\tvar lastFilterIndex;\n\tvar inSingle;\n\tvar inDouble;\n\tvar curly;\n\tvar square;\n\tvar paren;\n\t/**\n\t * Push a filter to the current directive object\n\t */\n\t\n\tfunction pushFilter() {\n\t var exp = str.slice(lastFilterIndex, i).trim();\n\t var filter;\n\t if (exp) {\n\t filter = {};\n\t var tokens = exp.match(filterTokenRE);\n\t filter.name = tokens[0];\n\t if (tokens.length > 1) {\n\t filter.args = tokens.slice(1).map(processFilterArg);\n\t }\n\t }\n\t if (filter) {\n\t (dir.filters = dir.filters || []).push(filter);\n\t }\n\t lastFilterIndex = i + 1;\n\t}\n\t\n\t/**\n\t * Check if an argument is dynamic and strip quotes.\n\t *\n\t * @param {String} arg\n\t * @return {Object}\n\t */\n\t\n\tfunction processFilterArg(arg) {\n\t if (reservedArgRE.test(arg)) {\n\t return {\n\t value: toNumber(arg),\n\t dynamic: false\n\t };\n\t } else {\n\t var stripped = stripQuotes(arg);\n\t var dynamic = stripped === arg;\n\t return {\n\t value: dynamic ? arg : stripped,\n\t dynamic: dynamic\n\t };\n\t }\n\t}\n\t\n\t/**\n\t * Parse a directive value and extract the expression\n\t * and its filters into a descriptor.\n\t *\n\t * Example:\n\t *\n\t * \"a + 1 | uppercase\" will yield:\n\t * {\n\t * expression: 'a + 1',\n\t * filters: [\n\t * { name: 'uppercase', args: null }\n\t * ]\n\t * }\n\t *\n\t * @param {String} s\n\t * @return {Object}\n\t */\n\t\n\tfunction parseDirective(s) {\n\t var hit = cache$1.get(s);\n\t if (hit) {\n\t return hit;\n\t }\n\t\n\t // reset parser state\n\t str = s;\n\t inSingle = inDouble = false;\n\t curly = square = paren = 0;\n\t lastFilterIndex = 0;\n\t dir = {};\n\t\n\t for (i = 0, l = str.length; i < l; i++) {\n\t prev = c;\n\t c = str.charCodeAt(i);\n\t if (inSingle) {\n\t // check single quote\n\t if (c === 0x27 && prev !== 0x5C) inSingle = !inSingle;\n\t } else if (inDouble) {\n\t // check double quote\n\t if (c === 0x22 && prev !== 0x5C) inDouble = !inDouble;\n\t } else if (c === 0x7C && // pipe\n\t str.charCodeAt(i + 1) !== 0x7C && str.charCodeAt(i - 1) !== 0x7C) {\n\t if (dir.expression == null) {\n\t // first filter, end of expression\n\t lastFilterIndex = i + 1;\n\t dir.expression = str.slice(0, i).trim();\n\t } else {\n\t // already has filter\n\t pushFilter();\n\t }\n\t } else {\n\t switch (c) {\n\t case 0x22:\n\t inDouble = true;break; // \"\n\t case 0x27:\n\t inSingle = true;break; // '\n\t case 0x28:\n\t paren++;break; // (\n\t case 0x29:\n\t paren--;break; // )\n\t case 0x5B:\n\t square++;break; // [\n\t case 0x5D:\n\t square--;break; // ]\n\t case 0x7B:\n\t curly++;break; // {\n\t case 0x7D:\n\t curly--;break; // }\n\t }\n\t }\n\t }\n\t\n\t if (dir.expression == null) {\n\t dir.expression = str.slice(0, i).trim();\n\t } else if (lastFilterIndex !== 0) {\n\t pushFilter();\n\t }\n\t\n\t cache$1.put(s, dir);\n\t return dir;\n\t}\n\t\n\tvar directive = Object.freeze({\n\t parseDirective: parseDirective\n\t});\n\t\n\tvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\tvar cache = undefined;\n\tvar tagRE = undefined;\n\tvar htmlRE = undefined;\n\t/**\n\t * Escape a string so it can be used in a RegExp\n\t * constructor.\n\t *\n\t * @param {String} str\n\t */\n\t\n\tfunction escapeRegex(str) {\n\t return str.replace(regexEscapeRE, '\\\\$&');\n\t}\n\t\n\tfunction compileRegex() {\n\t var open = escapeRegex(config.delimiters[0]);\n\t var close = escapeRegex(config.delimiters[1]);\n\t var unsafeOpen = escapeRegex(config.unsafeDelimiters[0]);\n\t var unsafeClose = escapeRegex(config.unsafeDelimiters[1]);\n\t tagRE = new RegExp(unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '|' + open + '((?:.|\\\\n)+?)' + close, 'g');\n\t htmlRE = new RegExp('^' + unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '$');\n\t // reset cache\n\t cache = new Cache(1000);\n\t}\n\t\n\t/**\n\t * Parse a template text string into an array of tokens.\n\t *\n\t * @param {String} text\n\t * @return {Array | null}\n\t * - {String} type\n\t * - {String} value\n\t * - {Boolean} [html]\n\t * - {Boolean} [oneTime]\n\t */\n\t\n\tfunction parseText(text) {\n\t if (!cache) {\n\t compileRegex();\n\t }\n\t var hit = cache.get(text);\n\t if (hit) {\n\t return hit;\n\t }\n\t if (!tagRE.test(text)) {\n\t return null;\n\t }\n\t var tokens = [];\n\t var lastIndex = tagRE.lastIndex = 0;\n\t var match, index, html, value, first, oneTime;\n\t /* eslint-disable no-cond-assign */\n\t while (match = tagRE.exec(text)) {\n\t /* eslint-enable no-cond-assign */\n\t index = match.index;\n\t // push text token\n\t if (index > lastIndex) {\n\t tokens.push({\n\t value: text.slice(lastIndex, index)\n\t });\n\t }\n\t // tag token\n\t html = htmlRE.test(match[0]);\n\t value = html ? match[1] : match[2];\n\t first = value.charCodeAt(0);\n\t oneTime = first === 42; // *\n\t value = oneTime ? value.slice(1) : value;\n\t tokens.push({\n\t tag: true,\n\t value: value.trim(),\n\t html: html,\n\t oneTime: oneTime\n\t });\n\t lastIndex = index + match[0].length;\n\t }\n\t if (lastIndex < text.length) {\n\t tokens.push({\n\t value: text.slice(lastIndex)\n\t });\n\t }\n\t cache.put(text, tokens);\n\t return tokens;\n\t}\n\t\n\t/**\n\t * Format a list of tokens into an expression.\n\t * e.g. tokens parsed from 'a {{b}} c' can be serialized\n\t * into one single expression as '\"a \" + b + \" c\"'.\n\t *\n\t * @param {Array} tokens\n\t * @param {Vue} [vm]\n\t * @return {String}\n\t */\n\t\n\tfunction tokensToExp(tokens, vm) {\n\t if (tokens.length > 1) {\n\t return tokens.map(function (token) {\n\t return formatToken(token, vm);\n\t }).join('+');\n\t } else {\n\t return formatToken(tokens[0], vm, true);\n\t }\n\t}\n\t\n\t/**\n\t * Format a single token.\n\t *\n\t * @param {Object} token\n\t * @param {Vue} [vm]\n\t * @param {Boolean} [single]\n\t * @return {String}\n\t */\n\t\n\tfunction formatToken(token, vm, single) {\n\t return token.tag ? token.oneTime && vm ? '\"' + vm.$eval(token.value) + '\"' : inlineFilters(token.value, single) : '\"' + token.value + '\"';\n\t}\n\t\n\t/**\n\t * For an attribute with multiple interpolation tags,\n\t * e.g. attr=\"some-{{thing | filter}}\", in order to combine\n\t * the whole thing into a single watchable expression, we\n\t * have to inline those filters. This function does exactly\n\t * that. This is a bit hacky but it avoids heavy changes\n\t * to directive parser and watcher mechanism.\n\t *\n\t * @param {String} exp\n\t * @param {Boolean} single\n\t * @return {String}\n\t */\n\t\n\tvar filterRE = /[^|]\\|[^|]/;\n\tfunction inlineFilters(exp, single) {\n\t if (!filterRE.test(exp)) {\n\t return single ? exp : '(' + exp + ')';\n\t } else {\n\t var dir = parseDirective(exp);\n\t if (!dir.filters) {\n\t return '(' + exp + ')';\n\t } else {\n\t return 'this._applyFilters(' + dir.expression + // value\n\t ',null,' + // oldValue (null for read)\n\t JSON.stringify(dir.filters) + // filter descriptors\n\t ',false)'; // write?\n\t }\n\t }\n\t}\n\t\n\tvar text = Object.freeze({\n\t compileRegex: compileRegex,\n\t parseText: parseText,\n\t tokensToExp: tokensToExp\n\t});\n\t\n\tvar delimiters = ['{{', '}}'];\n\tvar unsafeDelimiters = ['{{{', '}}}'];\n\t\n\tvar config = Object.defineProperties({\n\t\n\t /**\n\t * Whether to print debug messages.\n\t * Also enables stack trace for warnings.\n\t *\n\t * @type {Boolean}\n\t */\n\t\n\t debug: false,\n\t\n\t /**\n\t * Whether to suppress warnings.\n\t *\n\t * @type {Boolean}\n\t */\n\t\n\t silent: false,\n\t\n\t /**\n\t * Whether to use async rendering.\n\t */\n\t\n\t async: true,\n\t\n\t /**\n\t * Whether to warn against errors caught when evaluating\n\t * expressions.\n\t */\n\t\n\t warnExpressionErrors: true,\n\t\n\t /**\n\t * Whether to allow devtools inspection.\n\t * Disabled by default in production builds.\n\t */\n\t\n\t devtools: (\"production\") !== 'production',\n\t\n\t /**\n\t * Internal flag to indicate the delimiters have been\n\t * changed.\n\t *\n\t * @type {Boolean}\n\t */\n\t\n\t _delimitersChanged: true,\n\t\n\t /**\n\t * List of asset types that a component can own.\n\t *\n\t * @type {Array}\n\t */\n\t\n\t _assetTypes: ['component', 'directive', 'elementDirective', 'filter', 'transition', 'partial'],\n\t\n\t /**\n\t * prop binding modes\n\t */\n\t\n\t _propBindingModes: {\n\t ONE_WAY: 0,\n\t TWO_WAY: 1,\n\t ONE_TIME: 2\n\t },\n\t\n\t /**\n\t * Max circular updates allowed in a batcher flush cycle.\n\t */\n\t\n\t _maxUpdateCount: 100\n\t\n\t}, {\n\t delimiters: { /**\n\t * Interpolation delimiters. Changing these would trigger\n\t * the text parser to re-compile the regular expressions.\n\t *\n\t * @type {Array}\n\t */\n\t\n\t get: function get() {\n\t return delimiters;\n\t },\n\t set: function set(val) {\n\t delimiters = val;\n\t compileRegex();\n\t },\n\t configurable: true,\n\t enumerable: true\n\t },\n\t unsafeDelimiters: {\n\t get: function get() {\n\t return unsafeDelimiters;\n\t },\n\t set: function set(val) {\n\t unsafeDelimiters = val;\n\t compileRegex();\n\t },\n\t configurable: true,\n\t enumerable: true\n\t }\n\t});\n\t\n\tvar warn = undefined;\n\tvar formatComponentName = undefined;\n\t\n\tif (false) {\n\t (function () {\n\t var hasConsole = typeof console !== 'undefined';\n\t\n\t warn = function (msg, vm) {\n\t if (hasConsole && !config.silent) {\n\t console.error('[Vue warn]: ' + msg + (vm ? formatComponentName(vm) : ''));\n\t }\n\t };\n\t\n\t formatComponentName = function (vm) {\n\t var name = vm._isVue ? vm.$options.name : vm.name;\n\t return name ? ' (found in component: <' + hyphenate(name) + '>)' : '';\n\t };\n\t })();\n\t}\n\t\n\t/**\n\t * Append with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction appendWithTransition(el, target, vm, cb) {\n\t applyTransition(el, 1, function () {\n\t target.appendChild(el);\n\t }, vm, cb);\n\t}\n\t\n\t/**\n\t * InsertBefore with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction beforeWithTransition(el, target, vm, cb) {\n\t applyTransition(el, 1, function () {\n\t before(el, target);\n\t }, vm, cb);\n\t}\n\t\n\t/**\n\t * Remove with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction removeWithTransition(el, vm, cb) {\n\t applyTransition(el, -1, function () {\n\t remove(el);\n\t }, vm, cb);\n\t}\n\t\n\t/**\n\t * Apply transitions with an operation callback.\n\t *\n\t * @param {Element} el\n\t * @param {Number} direction\n\t * 1: enter\n\t * -1: leave\n\t * @param {Function} op - the actual DOM operation\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction applyTransition(el, direction, op, vm, cb) {\n\t var transition = el.__v_trans;\n\t if (!transition ||\n\t // skip if there are no js hooks and CSS transition is\n\t // not supported\n\t !transition.hooks && !transitionEndEvent ||\n\t // skip transitions for initial compile\n\t !vm._isCompiled ||\n\t // if the vm is being manipulated by a parent directive\n\t // during the parent's compilation phase, skip the\n\t // animation.\n\t vm.$parent && !vm.$parent._isCompiled) {\n\t op();\n\t if (cb) cb();\n\t return;\n\t }\n\t var action = direction > 0 ? 'enter' : 'leave';\n\t transition[action](op, cb);\n\t}\n\t\n\tvar transition = Object.freeze({\n\t appendWithTransition: appendWithTransition,\n\t beforeWithTransition: beforeWithTransition,\n\t removeWithTransition: removeWithTransition,\n\t applyTransition: applyTransition\n\t});\n\t\n\t/**\n\t * Query an element selector if it's not an element already.\n\t *\n\t * @param {String|Element} el\n\t * @return {Element}\n\t */\n\t\n\tfunction query(el) {\n\t if (typeof el === 'string') {\n\t var selector = el;\n\t el = document.querySelector(el);\n\t if (!el) {\n\t (\"production\") !== 'production' && warn('Cannot find element: ' + selector);\n\t }\n\t }\n\t return el;\n\t}\n\t\n\t/**\n\t * Check if a node is in the document.\n\t * Note: document.documentElement.contains should work here\n\t * but always returns false for comment nodes in phantomjs,\n\t * making unit tests difficult. This is fixed by doing the\n\t * contains() check on the node's parentNode instead of\n\t * the node itself.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */\n\t\n\tfunction inDoc(node) {\n\t if (!node) return false;\n\t var doc = node.ownerDocument.documentElement;\n\t var parent = node.parentNode;\n\t return doc === node || doc === parent || !!(parent && parent.nodeType === 1 && doc.contains(parent));\n\t}\n\t\n\t/**\n\t * Get and remove an attribute from a node.\n\t *\n\t * @param {Node} node\n\t * @param {String} _attr\n\t */\n\t\n\tfunction getAttr(node, _attr) {\n\t var val = node.getAttribute(_attr);\n\t if (val !== null) {\n\t node.removeAttribute(_attr);\n\t }\n\t return val;\n\t}\n\t\n\t/**\n\t * Get an attribute with colon or v-bind: prefix.\n\t *\n\t * @param {Node} node\n\t * @param {String} name\n\t * @return {String|null}\n\t */\n\t\n\tfunction getBindAttr(node, name) {\n\t var val = getAttr(node, ':' + name);\n\t if (val === null) {\n\t val = getAttr(node, 'v-bind:' + name);\n\t }\n\t return val;\n\t}\n\t\n\t/**\n\t * Check the presence of a bind attribute.\n\t *\n\t * @param {Node} node\n\t * @param {String} name\n\t * @return {Boolean}\n\t */\n\t\n\tfunction hasBindAttr(node, name) {\n\t return node.hasAttribute(name) || node.hasAttribute(':' + name) || node.hasAttribute('v-bind:' + name);\n\t}\n\t\n\t/**\n\t * Insert el before target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */\n\t\n\tfunction before(el, target) {\n\t target.parentNode.insertBefore(el, target);\n\t}\n\t\n\t/**\n\t * Insert el after target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */\n\t\n\tfunction after(el, target) {\n\t if (target.nextSibling) {\n\t before(el, target.nextSibling);\n\t } else {\n\t target.parentNode.appendChild(el);\n\t }\n\t}\n\t\n\t/**\n\t * Remove el from DOM\n\t *\n\t * @param {Element} el\n\t */\n\t\n\tfunction remove(el) {\n\t el.parentNode.removeChild(el);\n\t}\n\t\n\t/**\n\t * Prepend el to target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */\n\t\n\tfunction prepend(el, target) {\n\t if (target.firstChild) {\n\t before(el, target.firstChild);\n\t } else {\n\t target.appendChild(el);\n\t }\n\t}\n\t\n\t/**\n\t * Replace target with el\n\t *\n\t * @param {Element} target\n\t * @param {Element} el\n\t */\n\t\n\tfunction replace(target, el) {\n\t var parent = target.parentNode;\n\t if (parent) {\n\t parent.replaceChild(el, target);\n\t }\n\t}\n\t\n\t/**\n\t * Add event listener shorthand.\n\t *\n\t * @param {Element} el\n\t * @param {String} event\n\t * @param {Function} cb\n\t * @param {Boolean} [useCapture]\n\t */\n\t\n\tfunction on(el, event, cb, useCapture) {\n\t el.addEventListener(event, cb, useCapture);\n\t}\n\t\n\t/**\n\t * Remove event listener shorthand.\n\t *\n\t * @param {Element} el\n\t * @param {String} event\n\t * @param {Function} cb\n\t */\n\t\n\tfunction off(el, event, cb) {\n\t el.removeEventListener(event, cb);\n\t}\n\t\n\t/**\n\t * For IE9 compat: when both class and :class are present\n\t * getAttribute('class') returns wrong value...\n\t *\n\t * @param {Element} el\n\t * @return {String}\n\t */\n\t\n\tfunction getClass(el) {\n\t var classname = el.className;\n\t if (typeof classname === 'object') {\n\t classname = classname.baseVal || '';\n\t }\n\t return classname;\n\t}\n\t\n\t/**\n\t * In IE9, setAttribute('class') will result in empty class\n\t * if the element also has the :class attribute; However in\n\t * PhantomJS, setting `className` does not work on SVG elements...\n\t * So we have to do a conditional check here.\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */\n\t\n\tfunction setClass(el, cls) {\n\t /* istanbul ignore if */\n\t if (isIE9 && !/svg$/.test(el.namespaceURI)) {\n\t el.className = cls;\n\t } else {\n\t el.setAttribute('class', cls);\n\t }\n\t}\n\t\n\t/**\n\t * Add class with compatibility for IE & SVG\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */\n\t\n\tfunction addClass(el, cls) {\n\t if (el.classList) {\n\t el.classList.add(cls);\n\t } else {\n\t var cur = ' ' + getClass(el) + ' ';\n\t if (cur.indexOf(' ' + cls + ' ') < 0) {\n\t setClass(el, (cur + cls).trim());\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Remove class with compatibility for IE & SVG\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */\n\t\n\tfunction removeClass(el, cls) {\n\t if (el.classList) {\n\t el.classList.remove(cls);\n\t } else {\n\t var cur = ' ' + getClass(el) + ' ';\n\t var tar = ' ' + cls + ' ';\n\t while (cur.indexOf(tar) >= 0) {\n\t cur = cur.replace(tar, ' ');\n\t }\n\t setClass(el, cur.trim());\n\t }\n\t if (!el.className) {\n\t el.removeAttribute('class');\n\t }\n\t}\n\t\n\t/**\n\t * Extract raw content inside an element into a temporary\n\t * container div\n\t *\n\t * @param {Element} el\n\t * @param {Boolean} asFragment\n\t * @return {Element|DocumentFragment}\n\t */\n\t\n\tfunction extractContent(el, asFragment) {\n\t var child;\n\t var rawContent;\n\t /* istanbul ignore if */\n\t if (isTemplate(el) && isFragment(el.content)) {\n\t el = el.content;\n\t }\n\t if (el.hasChildNodes()) {\n\t trimNode(el);\n\t rawContent = asFragment ? document.createDocumentFragment() : document.createElement('div');\n\t /* eslint-disable no-cond-assign */\n\t while (child = el.firstChild) {\n\t /* eslint-enable no-cond-assign */\n\t rawContent.appendChild(child);\n\t }\n\t }\n\t return rawContent;\n\t}\n\t\n\t/**\n\t * Trim possible empty head/tail text and comment\n\t * nodes inside a parent.\n\t *\n\t * @param {Node} node\n\t */\n\t\n\tfunction trimNode(node) {\n\t var child;\n\t /* eslint-disable no-sequences */\n\t while ((child = node.firstChild, isTrimmable(child))) {\n\t node.removeChild(child);\n\t }\n\t while ((child = node.lastChild, isTrimmable(child))) {\n\t node.removeChild(child);\n\t }\n\t /* eslint-enable no-sequences */\n\t}\n\t\n\tfunction isTrimmable(node) {\n\t return node && (node.nodeType === 3 && !node.data.trim() || node.nodeType === 8);\n\t}\n\t\n\t/**\n\t * Check if an element is a template tag.\n\t * Note if the template appears inside an SVG its tagName\n\t * will be in lowercase.\n\t *\n\t * @param {Element} el\n\t */\n\t\n\tfunction isTemplate(el) {\n\t return el.tagName && el.tagName.toLowerCase() === 'template';\n\t}\n\t\n\t/**\n\t * Create an \"anchor\" for performing dom insertion/removals.\n\t * This is used in a number of scenarios:\n\t * - fragment instance\n\t * - v-html\n\t * - v-if\n\t * - v-for\n\t * - component\n\t *\n\t * @param {String} content\n\t * @param {Boolean} persist - IE trashes empty textNodes on\n\t * cloneNode(true), so in certain\n\t * cases the anchor needs to be\n\t * non-empty to be persisted in\n\t * templates.\n\t * @return {Comment|Text}\n\t */\n\t\n\tfunction createAnchor(content, persist) {\n\t var anchor = config.debug ? document.createComment(content) : document.createTextNode(persist ? ' ' : '');\n\t anchor.__v_anchor = true;\n\t return anchor;\n\t}\n\t\n\t/**\n\t * Find a component ref attribute that starts with $.\n\t *\n\t * @param {Element} node\n\t * @return {String|undefined}\n\t */\n\t\n\tvar refRE = /^v-ref:/;\n\t\n\tfunction findRef(node) {\n\t if (node.hasAttributes()) {\n\t var attrs = node.attributes;\n\t for (var i = 0, l = attrs.length; i < l; i++) {\n\t var name = attrs[i].name;\n\t if (refRE.test(name)) {\n\t return camelize(name.replace(refRE, ''));\n\t }\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Map a function to a range of nodes .\n\t *\n\t * @param {Node} node\n\t * @param {Node} end\n\t * @param {Function} op\n\t */\n\t\n\tfunction mapNodeRange(node, end, op) {\n\t var next;\n\t while (node !== end) {\n\t next = node.nextSibling;\n\t op(node);\n\t node = next;\n\t }\n\t op(end);\n\t}\n\t\n\t/**\n\t * Remove a range of nodes with transition, store\n\t * the nodes in a fragment with correct ordering,\n\t * and call callback when done.\n\t *\n\t * @param {Node} start\n\t * @param {Node} end\n\t * @param {Vue} vm\n\t * @param {DocumentFragment} frag\n\t * @param {Function} cb\n\t */\n\t\n\tfunction removeNodeRange(start, end, vm, frag, cb) {\n\t var done = false;\n\t var removed = 0;\n\t var nodes = [];\n\t mapNodeRange(start, end, function (node) {\n\t if (node === end) done = true;\n\t nodes.push(node);\n\t removeWithTransition(node, vm, onRemoved);\n\t });\n\t function onRemoved() {\n\t removed++;\n\t if (done && removed >= nodes.length) {\n\t for (var i = 0; i < nodes.length; i++) {\n\t frag.appendChild(nodes[i]);\n\t }\n\t cb && cb();\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Check if a node is a DocumentFragment.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isFragment(node) {\n\t return node && node.nodeType === 11;\n\t}\n\t\n\t/**\n\t * Get outerHTML of elements, taking care\n\t * of SVG elements in IE as well.\n\t *\n\t * @param {Element} el\n\t * @return {String}\n\t */\n\t\n\tfunction getOuterHTML(el) {\n\t if (el.outerHTML) {\n\t return el.outerHTML;\n\t } else {\n\t var container = document.createElement('div');\n\t container.appendChild(el.cloneNode(true));\n\t return container.innerHTML;\n\t }\n\t}\n\t\n\tvar commonTagRE = /^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i;\n\tvar reservedTagRE = /^(slot|partial|component)$/i;\n\t\n\tvar isUnknownElement = undefined;\n\tif (false) {\n\t isUnknownElement = function (el, tag) {\n\t if (tag.indexOf('-') > -1) {\n\t // http://stackoverflow.com/a/28210364/1070244\n\t return el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;\n\t } else {\n\t return (/HTMLUnknownElement/.test(el.toString()) &&\n\t // Chrome returns unknown for several HTML5 elements.\n\t // https://code.google.com/p/chromium/issues/detail?id=540526\n\t // Firefox returns unknown for some \"Interactive elements.\"\n\t !/^(data|time|rtc|rb|details|dialog|summary)$/.test(tag)\n\t );\n\t }\n\t };\n\t}\n\t\n\t/**\n\t * Check if an element is a component, if yes return its\n\t * component id.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Object|undefined}\n\t */\n\t\n\tfunction checkComponentAttr(el, options) {\n\t var tag = el.tagName.toLowerCase();\n\t var hasAttrs = el.hasAttributes();\n\t if (!commonTagRE.test(tag) && !reservedTagRE.test(tag)) {\n\t if (resolveAsset(options, 'components', tag)) {\n\t return { id: tag };\n\t } else {\n\t var is = hasAttrs && getIsBinding(el, options);\n\t if (is) {\n\t return is;\n\t } else if (false) {\n\t var expectedTag = options._componentNameMap && options._componentNameMap[tag];\n\t if (expectedTag) {\n\t warn('Unknown custom element: <' + tag + '> - ' + 'did you mean <' + expectedTag + '>? ' + 'HTML is case-insensitive, remember to use kebab-case in templates.');\n\t } else if (isUnknownElement(el, tag)) {\n\t warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the \"name\" option.');\n\t }\n\t }\n\t }\n\t } else if (hasAttrs) {\n\t return getIsBinding(el, options);\n\t }\n\t}\n\t\n\t/**\n\t * Get \"is\" binding from an element.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Object|undefined}\n\t */\n\t\n\tfunction getIsBinding(el, options) {\n\t // dynamic syntax\n\t var exp = el.getAttribute('is');\n\t if (exp != null) {\n\t if (resolveAsset(options, 'components', exp)) {\n\t el.removeAttribute('is');\n\t return { id: exp };\n\t }\n\t } else {\n\t exp = getBindAttr(el, 'is');\n\t if (exp != null) {\n\t return { id: exp, dynamic: true };\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Option overwriting strategies are functions that handle\n\t * how to merge a parent option value and a child option\n\t * value into the final value.\n\t *\n\t * All strategy functions follow the same signature:\n\t *\n\t * @param {*} parentVal\n\t * @param {*} childVal\n\t * @param {Vue} [vm]\n\t */\n\t\n\tvar strats = config.optionMergeStrategies = Object.create(null);\n\t\n\t/**\n\t * Helper that recursively merges two data objects together.\n\t */\n\t\n\tfunction mergeData(to, from) {\n\t var key, toVal, fromVal;\n\t for (key in from) {\n\t toVal = to[key];\n\t fromVal = from[key];\n\t if (!hasOwn(to, key)) {\n\t set(to, key, fromVal);\n\t } else if (isObject(toVal) && isObject(fromVal)) {\n\t mergeData(toVal, fromVal);\n\t }\n\t }\n\t return to;\n\t}\n\t\n\t/**\n\t * Data\n\t */\n\t\n\tstrats.data = function (parentVal, childVal, vm) {\n\t if (!vm) {\n\t // in a Vue.extend merge, both should be functions\n\t if (!childVal) {\n\t return parentVal;\n\t }\n\t if (typeof childVal !== 'function') {\n\t (\"production\") !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n\t return parentVal;\n\t }\n\t if (!parentVal) {\n\t return childVal;\n\t }\n\t // when parentVal & childVal are both present,\n\t // we need to return a function that returns the\n\t // merged result of both functions... no need to\n\t // check if parentVal is a function here because\n\t // it has to be a function to pass previous merges.\n\t return function mergedDataFn() {\n\t return mergeData(childVal.call(this), parentVal.call(this));\n\t };\n\t } else if (parentVal || childVal) {\n\t return function mergedInstanceDataFn() {\n\t // instance merge\n\t var instanceData = typeof childVal === 'function' ? childVal.call(vm) : childVal;\n\t var defaultData = typeof parentVal === 'function' ? parentVal.call(vm) : undefined;\n\t if (instanceData) {\n\t return mergeData(instanceData, defaultData);\n\t } else {\n\t return defaultData;\n\t }\n\t };\n\t }\n\t};\n\t\n\t/**\n\t * El\n\t */\n\t\n\tstrats.el = function (parentVal, childVal, vm) {\n\t if (!vm && childVal && typeof childVal !== 'function') {\n\t (\"production\") !== 'production' && warn('The \"el\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n\t return;\n\t }\n\t var ret = childVal || parentVal;\n\t // invoke the element factory if this is instance merge\n\t return vm && typeof ret === 'function' ? ret.call(vm) : ret;\n\t};\n\t\n\t/**\n\t * Hooks and param attributes are merged as arrays.\n\t */\n\t\n\tstrats.init = strats.created = strats.ready = strats.attached = strats.detached = strats.beforeCompile = strats.compiled = strats.beforeDestroy = strats.destroyed = strats.activate = function (parentVal, childVal) {\n\t return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n\t};\n\t\n\t/**\n\t * Assets\n\t *\n\t * When a vm is present (instance creation), we need to do\n\t * a three-way merge between constructor options, instance\n\t * options and parent options.\n\t */\n\t\n\tfunction mergeAssets(parentVal, childVal) {\n\t var res = Object.create(parentVal || null);\n\t return childVal ? extend(res, guardArrayAssets(childVal)) : res;\n\t}\n\t\n\tconfig._assetTypes.forEach(function (type) {\n\t strats[type + 's'] = mergeAssets;\n\t});\n\t\n\t/**\n\t * Events & Watchers.\n\t *\n\t * Events & watchers hashes should not overwrite one\n\t * another, so we merge them as arrays.\n\t */\n\t\n\tstrats.watch = strats.events = function (parentVal, childVal) {\n\t if (!childVal) return parentVal;\n\t if (!parentVal) return childVal;\n\t var ret = {};\n\t extend(ret, parentVal);\n\t for (var key in childVal) {\n\t var parent = ret[key];\n\t var child = childVal[key];\n\t if (parent && !isArray(parent)) {\n\t parent = [parent];\n\t }\n\t ret[key] = parent ? parent.concat(child) : [child];\n\t }\n\t return ret;\n\t};\n\t\n\t/**\n\t * Other object hashes.\n\t */\n\t\n\tstrats.props = strats.methods = strats.computed = function (parentVal, childVal) {\n\t if (!childVal) return parentVal;\n\t if (!parentVal) return childVal;\n\t var ret = Object.create(null);\n\t extend(ret, parentVal);\n\t extend(ret, childVal);\n\t return ret;\n\t};\n\t\n\t/**\n\t * Default strategy.\n\t */\n\t\n\tvar defaultStrat = function defaultStrat(parentVal, childVal) {\n\t return childVal === undefined ? parentVal : childVal;\n\t};\n\t\n\t/**\n\t * Make sure component options get converted to actual\n\t * constructors.\n\t *\n\t * @param {Object} options\n\t */\n\t\n\tfunction guardComponents(options) {\n\t if (options.components) {\n\t var components = options.components = guardArrayAssets(options.components);\n\t var ids = Object.keys(components);\n\t var def;\n\t if (false) {\n\t var map = options._componentNameMap = {};\n\t }\n\t for (var i = 0, l = ids.length; i < l; i++) {\n\t var key = ids[i];\n\t if (commonTagRE.test(key) || reservedTagRE.test(key)) {\n\t (\"production\") !== 'production' && warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + key);\n\t continue;\n\t }\n\t // record a all lowercase <-> kebab-case mapping for\n\t // possible custom element case error warning\n\t if (false) {\n\t map[key.replace(/-/g, '').toLowerCase()] = hyphenate(key);\n\t }\n\t def = components[key];\n\t if (isPlainObject(def)) {\n\t components[key] = Vue.extend(def);\n\t }\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Ensure all props option syntax are normalized into the\n\t * Object-based format.\n\t *\n\t * @param {Object} options\n\t */\n\t\n\tfunction guardProps(options) {\n\t var props = options.props;\n\t var i, val;\n\t if (isArray(props)) {\n\t options.props = {};\n\t i = props.length;\n\t while (i--) {\n\t val = props[i];\n\t if (typeof val === 'string') {\n\t options.props[val] = null;\n\t } else if (val.name) {\n\t options.props[val.name] = val;\n\t }\n\t }\n\t } else if (isPlainObject(props)) {\n\t var keys = Object.keys(props);\n\t i = keys.length;\n\t while (i--) {\n\t val = props[keys[i]];\n\t if (typeof val === 'function') {\n\t props[keys[i]] = { type: val };\n\t }\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Guard an Array-format assets option and converted it\n\t * into the key-value Object format.\n\t *\n\t * @param {Object|Array} assets\n\t * @return {Object}\n\t */\n\t\n\tfunction guardArrayAssets(assets) {\n\t if (isArray(assets)) {\n\t var res = {};\n\t var i = assets.length;\n\t var asset;\n\t while (i--) {\n\t asset = assets[i];\n\t var id = typeof asset === 'function' ? asset.options && asset.options.name || asset.id : asset.name || asset.id;\n\t if (!id) {\n\t (\"production\") !== 'production' && warn('Array-syntax assets must provide a \"name\" or \"id\" field.');\n\t } else {\n\t res[id] = asset;\n\t }\n\t }\n\t return res;\n\t }\n\t return assets;\n\t}\n\t\n\t/**\n\t * Merge two option objects into a new one.\n\t * Core utility used in both instantiation and inheritance.\n\t *\n\t * @param {Object} parent\n\t * @param {Object} child\n\t * @param {Vue} [vm] - if vm is present, indicates this is\n\t * an instantiation merge.\n\t */\n\t\n\tfunction mergeOptions(parent, child, vm) {\n\t guardComponents(child);\n\t guardProps(child);\n\t if (false) {\n\t if (child.propsData && !vm) {\n\t warn('propsData can only be used as an instantiation option.');\n\t }\n\t }\n\t var options = {};\n\t var key;\n\t if (child['extends']) {\n\t parent = typeof child['extends'] === 'function' ? mergeOptions(parent, child['extends'].options, vm) : mergeOptions(parent, child['extends'], vm);\n\t }\n\t if (child.mixins) {\n\t for (var i = 0, l = child.mixins.length; i < l; i++) {\n\t var mixin = child.mixins[i];\n\t var mixinOptions = mixin.prototype instanceof Vue ? mixin.options : mixin;\n\t parent = mergeOptions(parent, mixinOptions, vm);\n\t }\n\t }\n\t for (key in parent) {\n\t mergeField(key);\n\t }\n\t for (key in child) {\n\t if (!hasOwn(parent, key)) {\n\t mergeField(key);\n\t }\n\t }\n\t function mergeField(key) {\n\t var strat = strats[key] || defaultStrat;\n\t options[key] = strat(parent[key], child[key], vm, key);\n\t }\n\t return options;\n\t}\n\t\n\t/**\n\t * Resolve an asset.\n\t * This function is used because child instances need access\n\t * to assets defined in its ancestor chain.\n\t *\n\t * @param {Object} options\n\t * @param {String} type\n\t * @param {String} id\n\t * @param {Boolean} warnMissing\n\t * @return {Object|Function}\n\t */\n\t\n\tfunction resolveAsset(options, type, id, warnMissing) {\n\t /* istanbul ignore if */\n\t if (typeof id !== 'string') {\n\t return;\n\t }\n\t var assets = options[type];\n\t var camelizedId;\n\t var res = assets[id] ||\n\t // camelCase ID\n\t assets[camelizedId = camelize(id)] ||\n\t // Pascal Case ID\n\t assets[camelizedId.charAt(0).toUpperCase() + camelizedId.slice(1)];\n\t if (false) {\n\t warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n\t }\n\t return res;\n\t}\n\t\n\tvar uid$1 = 0;\n\t\n\t/**\n\t * A dep is an observable that can have multiple\n\t * directives subscribing to it.\n\t *\n\t * @constructor\n\t */\n\tfunction Dep() {\n\t this.id = uid$1++;\n\t this.subs = [];\n\t}\n\t\n\t// the current target watcher being evaluated.\n\t// this is globally unique because there could be only one\n\t// watcher being evaluated at any time.\n\tDep.target = null;\n\t\n\t/**\n\t * Add a directive subscriber.\n\t *\n\t * @param {Directive} sub\n\t */\n\t\n\tDep.prototype.addSub = function (sub) {\n\t this.subs.push(sub);\n\t};\n\t\n\t/**\n\t * Remove a directive subscriber.\n\t *\n\t * @param {Directive} sub\n\t */\n\t\n\tDep.prototype.removeSub = function (sub) {\n\t this.subs.$remove(sub);\n\t};\n\t\n\t/**\n\t * Add self as a dependency to the target watcher.\n\t */\n\t\n\tDep.prototype.depend = function () {\n\t Dep.target.addDep(this);\n\t};\n\t\n\t/**\n\t * Notify all subscribers of a new value.\n\t */\n\t\n\tDep.prototype.notify = function () {\n\t // stablize the subscriber list first\n\t var subs = toArray(this.subs);\n\t for (var i = 0, l = subs.length; i < l; i++) {\n\t subs[i].update();\n\t }\n\t};\n\t\n\tvar arrayProto = Array.prototype;\n\tvar arrayMethods = Object.create(arrayProto)\n\t\n\t/**\n\t * Intercept mutating methods and emit events\n\t */\n\t\n\t;['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(function (method) {\n\t // cache original method\n\t var original = arrayProto[method];\n\t def(arrayMethods, method, function mutator() {\n\t // avoid leaking arguments:\n\t // http://jsperf.com/closure-with-arguments\n\t var i = arguments.length;\n\t var args = new Array(i);\n\t while (i--) {\n\t args[i] = arguments[i];\n\t }\n\t var result = original.apply(this, args);\n\t var ob = this.__ob__;\n\t var inserted;\n\t switch (method) {\n\t case 'push':\n\t inserted = args;\n\t break;\n\t case 'unshift':\n\t inserted = args;\n\t break;\n\t case 'splice':\n\t inserted = args.slice(2);\n\t break;\n\t }\n\t if (inserted) ob.observeArray(inserted);\n\t // notify change\n\t ob.dep.notify();\n\t return result;\n\t });\n\t});\n\t\n\t/**\n\t * Swap the element at the given index with a new value\n\t * and emits corresponding event.\n\t *\n\t * @param {Number} index\n\t * @param {*} val\n\t * @return {*} - replaced element\n\t */\n\t\n\tdef(arrayProto, '$set', function $set(index, val) {\n\t if (index >= this.length) {\n\t this.length = Number(index) + 1;\n\t }\n\t return this.splice(index, 1, val)[0];\n\t});\n\t\n\t/**\n\t * Convenience method to remove the element at given index or target element reference.\n\t *\n\t * @param {*} item\n\t */\n\t\n\tdef(arrayProto, '$remove', function $remove(item) {\n\t /* istanbul ignore if */\n\t if (!this.length) return;\n\t var index = indexOf(this, item);\n\t if (index > -1) {\n\t return this.splice(index, 1);\n\t }\n\t});\n\t\n\tvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\t\n\t/**\n\t * By default, when a reactive property is set, the new value is\n\t * also converted to become reactive. However in certain cases, e.g.\n\t * v-for scope alias and props, we don't want to force conversion\n\t * because the value may be a nested value under a frozen data structure.\n\t *\n\t * So whenever we want to set a reactive property without forcing\n\t * conversion on the new value, we wrap that call inside this function.\n\t */\n\t\n\tvar shouldConvert = true;\n\t\n\tfunction withoutConversion(fn) {\n\t shouldConvert = false;\n\t fn();\n\t shouldConvert = true;\n\t}\n\t\n\t/**\n\t * Observer class that are attached to each observed\n\t * object. Once attached, the observer converts target\n\t * object's property keys into getter/setters that\n\t * collect dependencies and dispatches updates.\n\t *\n\t * @param {Array|Object} value\n\t * @constructor\n\t */\n\t\n\tfunction Observer(value) {\n\t this.value = value;\n\t this.dep = new Dep();\n\t def(value, '__ob__', this);\n\t if (isArray(value)) {\n\t var augment = hasProto ? protoAugment : copyAugment;\n\t augment(value, arrayMethods, arrayKeys);\n\t this.observeArray(value);\n\t } else {\n\t this.walk(value);\n\t }\n\t}\n\t\n\t// Instance methods\n\t\n\t/**\n\t * Walk through each property and convert them into\n\t * getter/setters. This method should only be called when\n\t * value type is Object.\n\t *\n\t * @param {Object} obj\n\t */\n\t\n\tObserver.prototype.walk = function (obj) {\n\t var keys = Object.keys(obj);\n\t for (var i = 0, l = keys.length; i < l; i++) {\n\t this.convert(keys[i], obj[keys[i]]);\n\t }\n\t};\n\t\n\t/**\n\t * Observe a list of Array items.\n\t *\n\t * @param {Array} items\n\t */\n\t\n\tObserver.prototype.observeArray = function (items) {\n\t for (var i = 0, l = items.length; i < l; i++) {\n\t observe(items[i]);\n\t }\n\t};\n\t\n\t/**\n\t * Convert a property into getter/setter so we can emit\n\t * the events when the property is accessed/changed.\n\t *\n\t * @param {String} key\n\t * @param {*} val\n\t */\n\t\n\tObserver.prototype.convert = function (key, val) {\n\t defineReactive(this.value, key, val);\n\t};\n\t\n\t/**\n\t * Add an owner vm, so that when $set/$delete mutations\n\t * happen we can notify owner vms to proxy the keys and\n\t * digest the watchers. This is only called when the object\n\t * is observed as an instance's root $data.\n\t *\n\t * @param {Vue} vm\n\t */\n\t\n\tObserver.prototype.addVm = function (vm) {\n\t (this.vms || (this.vms = [])).push(vm);\n\t};\n\t\n\t/**\n\t * Remove an owner vm. This is called when the object is\n\t * swapped out as an instance's $data object.\n\t *\n\t * @param {Vue} vm\n\t */\n\t\n\tObserver.prototype.removeVm = function (vm) {\n\t this.vms.$remove(vm);\n\t};\n\t\n\t// helpers\n\t\n\t/**\n\t * Augment an target Object or Array by intercepting\n\t * the prototype chain using __proto__\n\t *\n\t * @param {Object|Array} target\n\t * @param {Object} src\n\t */\n\t\n\tfunction protoAugment(target, src) {\n\t /* eslint-disable no-proto */\n\t target.__proto__ = src;\n\t /* eslint-enable no-proto */\n\t}\n\t\n\t/**\n\t * Augment an target Object or Array by defining\n\t * hidden properties.\n\t *\n\t * @param {Object|Array} target\n\t * @param {Object} proto\n\t */\n\t\n\tfunction copyAugment(target, src, keys) {\n\t for (var i = 0, l = keys.length; i < l; i++) {\n\t var key = keys[i];\n\t def(target, key, src[key]);\n\t }\n\t}\n\t\n\t/**\n\t * Attempt to create an observer instance for a value,\n\t * returns the new observer if successfully observed,\n\t * or the existing observer if the value already has one.\n\t *\n\t * @param {*} value\n\t * @param {Vue} [vm]\n\t * @return {Observer|undefined}\n\t * @static\n\t */\n\t\n\tfunction observe(value, vm) {\n\t if (!value || typeof value !== 'object') {\n\t return;\n\t }\n\t var ob;\n\t if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n\t ob = value.__ob__;\n\t } else if (shouldConvert && (isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n\t ob = new Observer(value);\n\t }\n\t if (ob && vm) {\n\t ob.addVm(vm);\n\t }\n\t return ob;\n\t}\n\t\n\t/**\n\t * Define a reactive property on an Object.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t * @param {*} val\n\t */\n\t\n\tfunction defineReactive(obj, key, val) {\n\t var dep = new Dep();\n\t\n\t var property = Object.getOwnPropertyDescriptor(obj, key);\n\t if (property && property.configurable === false) {\n\t return;\n\t }\n\t\n\t // cater for pre-defined getter/setters\n\t var getter = property && property.get;\n\t var setter = property && property.set;\n\t\n\t var childOb = observe(val);\n\t Object.defineProperty(obj, key, {\n\t enumerable: true,\n\t configurable: true,\n\t get: function reactiveGetter() {\n\t var value = getter ? getter.call(obj) : val;\n\t if (Dep.target) {\n\t dep.depend();\n\t if (childOb) {\n\t childOb.dep.depend();\n\t }\n\t if (isArray(value)) {\n\t for (var e, i = 0, l = value.length; i < l; i++) {\n\t e = value[i];\n\t e && e.__ob__ && e.__ob__.dep.depend();\n\t }\n\t }\n\t }\n\t return value;\n\t },\n\t set: function reactiveSetter(newVal) {\n\t var value = getter ? getter.call(obj) : val;\n\t if (newVal === value) {\n\t return;\n\t }\n\t if (setter) {\n\t setter.call(obj, newVal);\n\t } else {\n\t val = newVal;\n\t }\n\t childOb = observe(newVal);\n\t dep.notify();\n\t }\n\t });\n\t}\n\t\n\t\n\t\n\tvar util = Object.freeze({\n\t\tdefineReactive: defineReactive,\n\t\tset: set,\n\t\tdel: del,\n\t\thasOwn: hasOwn,\n\t\tisLiteral: isLiteral,\n\t\tisReserved: isReserved,\n\t\t_toString: _toString,\n\t\ttoNumber: toNumber,\n\t\ttoBoolean: toBoolean,\n\t\tstripQuotes: stripQuotes,\n\t\tcamelize: camelize,\n\t\thyphenate: hyphenate,\n\t\tclassify: classify,\n\t\tbind: bind,\n\t\ttoArray: toArray,\n\t\textend: extend,\n\t\tisObject: isObject,\n\t\tisPlainObject: isPlainObject,\n\t\tdef: def,\n\t\tdebounce: _debounce,\n\t\tindexOf: indexOf,\n\t\tcancellable: cancellable,\n\t\tlooseEqual: looseEqual,\n\t\tisArray: isArray,\n\t\thasProto: hasProto,\n\t\tinBrowser: inBrowser,\n\t\tdevtools: devtools,\n\t\tisIE: isIE,\n\t\tisIE9: isIE9,\n\t\tisAndroid: isAndroid,\n\t\tisIos: isIos,\n\t\tiosVersionMatch: iosVersionMatch,\n\t\tiosVersion: iosVersion,\n\t\thasMutationObserverBug: hasMutationObserverBug,\n\t\tget transitionProp () { return transitionProp; },\n\t\tget transitionEndEvent () { return transitionEndEvent; },\n\t\tget animationProp () { return animationProp; },\n\t\tget animationEndEvent () { return animationEndEvent; },\n\t\tnextTick: nextTick,\n\t\tget _Set () { return _Set; },\n\t\tquery: query,\n\t\tinDoc: inDoc,\n\t\tgetAttr: getAttr,\n\t\tgetBindAttr: getBindAttr,\n\t\thasBindAttr: hasBindAttr,\n\t\tbefore: before,\n\t\tafter: after,\n\t\tremove: remove,\n\t\tprepend: prepend,\n\t\treplace: replace,\n\t\ton: on,\n\t\toff: off,\n\t\tsetClass: setClass,\n\t\taddClass: addClass,\n\t\tremoveClass: removeClass,\n\t\textractContent: extractContent,\n\t\ttrimNode: trimNode,\n\t\tisTemplate: isTemplate,\n\t\tcreateAnchor: createAnchor,\n\t\tfindRef: findRef,\n\t\tmapNodeRange: mapNodeRange,\n\t\tremoveNodeRange: removeNodeRange,\n\t\tisFragment: isFragment,\n\t\tgetOuterHTML: getOuterHTML,\n\t\tmergeOptions: mergeOptions,\n\t\tresolveAsset: resolveAsset,\n\t\tcheckComponentAttr: checkComponentAttr,\n\t\tcommonTagRE: commonTagRE,\n\t\treservedTagRE: reservedTagRE,\n\t\tget warn () { return warn; }\n\t});\n\t\n\tvar uid = 0;\n\t\n\tfunction initMixin (Vue) {\n\t /**\n\t * The main init sequence. This is called for every\n\t * instance, including ones that are created from extended\n\t * constructors.\n\t *\n\t * @param {Object} options - this options object should be\n\t * the result of merging class\n\t * options and the options passed\n\t * in to the constructor.\n\t */\n\t\n\t Vue.prototype._init = function (options) {\n\t options = options || {};\n\t\n\t this.$el = null;\n\t this.$parent = options.parent;\n\t this.$root = this.$parent ? this.$parent.$root : this;\n\t this.$children = [];\n\t this.$refs = {}; // child vm references\n\t this.$els = {}; // element references\n\t this._watchers = []; // all watchers as an array\n\t this._directives = []; // all directives\n\t\n\t // a uid\n\t this._uid = uid++;\n\t\n\t // a flag to avoid this being observed\n\t this._isVue = true;\n\t\n\t // events bookkeeping\n\t this._events = {}; // registered callbacks\n\t this._eventsCount = {}; // for $broadcast optimization\n\t\n\t // fragment instance properties\n\t this._isFragment = false;\n\t this._fragment = // @type {DocumentFragment}\n\t this._fragmentStart = // @type {Text|Comment}\n\t this._fragmentEnd = null; // @type {Text|Comment}\n\t\n\t // lifecycle state\n\t this._isCompiled = this._isDestroyed = this._isReady = this._isAttached = this._isBeingDestroyed = this._vForRemoving = false;\n\t this._unlinkFn = null;\n\t\n\t // context:\n\t // if this is a transcluded component, context\n\t // will be the common parent vm of this instance\n\t // and its host.\n\t this._context = options._context || this.$parent;\n\t\n\t // scope:\n\t // if this is inside an inline v-for, the scope\n\t // will be the intermediate scope created for this\n\t // repeat fragment. this is used for linking props\n\t // and container directives.\n\t this._scope = options._scope;\n\t\n\t // fragment:\n\t // if this instance is compiled inside a Fragment, it\n\t // needs to reigster itself as a child of that fragment\n\t // for attach/detach to work properly.\n\t this._frag = options._frag;\n\t if (this._frag) {\n\t this._frag.children.push(this);\n\t }\n\t\n\t // push self into parent / transclusion host\n\t if (this.$parent) {\n\t this.$parent.$children.push(this);\n\t }\n\t\n\t // merge options.\n\t options = this.$options = mergeOptions(this.constructor.options, options, this);\n\t\n\t // set ref\n\t this._updateRef();\n\t\n\t // initialize data as empty object.\n\t // it will be filled up in _initData().\n\t this._data = {};\n\t\n\t // call init hook\n\t this._callHook('init');\n\t\n\t // initialize data observation and scope inheritance.\n\t this._initState();\n\t\n\t // setup event system and option events.\n\t this._initEvents();\n\t\n\t // call created hook\n\t this._callHook('created');\n\t\n\t // if `el` option is passed, start compilation.\n\t if (options.el) {\n\t this.$mount(options.el);\n\t }\n\t };\n\t}\n\t\n\tvar pathCache = new Cache(1000);\n\t\n\t// actions\n\tvar APPEND = 0;\n\tvar PUSH = 1;\n\tvar INC_SUB_PATH_DEPTH = 2;\n\tvar PUSH_SUB_PATH = 3;\n\t\n\t// states\n\tvar BEFORE_PATH = 0;\n\tvar IN_PATH = 1;\n\tvar BEFORE_IDENT = 2;\n\tvar IN_IDENT = 3;\n\tvar IN_SUB_PATH = 4;\n\tvar IN_SINGLE_QUOTE = 5;\n\tvar IN_DOUBLE_QUOTE = 6;\n\tvar AFTER_PATH = 7;\n\tvar ERROR = 8;\n\t\n\tvar pathStateMachine = [];\n\t\n\tpathStateMachine[BEFORE_PATH] = {\n\t 'ws': [BEFORE_PATH],\n\t 'ident': [IN_IDENT, APPEND],\n\t '[': [IN_SUB_PATH],\n\t 'eof': [AFTER_PATH]\n\t};\n\t\n\tpathStateMachine[IN_PATH] = {\n\t 'ws': [IN_PATH],\n\t '.': [BEFORE_IDENT],\n\t '[': [IN_SUB_PATH],\n\t 'eof': [AFTER_PATH]\n\t};\n\t\n\tpathStateMachine[BEFORE_IDENT] = {\n\t 'ws': [BEFORE_IDENT],\n\t 'ident': [IN_IDENT, APPEND]\n\t};\n\t\n\tpathStateMachine[IN_IDENT] = {\n\t 'ident': [IN_IDENT, APPEND],\n\t '0': [IN_IDENT, APPEND],\n\t 'number': [IN_IDENT, APPEND],\n\t 'ws': [IN_PATH, PUSH],\n\t '.': [BEFORE_IDENT, PUSH],\n\t '[': [IN_SUB_PATH, PUSH],\n\t 'eof': [AFTER_PATH, PUSH]\n\t};\n\t\n\tpathStateMachine[IN_SUB_PATH] = {\n\t \"'\": [IN_SINGLE_QUOTE, APPEND],\n\t '\"': [IN_DOUBLE_QUOTE, APPEND],\n\t '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n\t ']': [IN_PATH, PUSH_SUB_PATH],\n\t 'eof': ERROR,\n\t 'else': [IN_SUB_PATH, APPEND]\n\t};\n\t\n\tpathStateMachine[IN_SINGLE_QUOTE] = {\n\t \"'\": [IN_SUB_PATH, APPEND],\n\t 'eof': ERROR,\n\t 'else': [IN_SINGLE_QUOTE, APPEND]\n\t};\n\t\n\tpathStateMachine[IN_DOUBLE_QUOTE] = {\n\t '\"': [IN_SUB_PATH, APPEND],\n\t 'eof': ERROR,\n\t 'else': [IN_DOUBLE_QUOTE, APPEND]\n\t};\n\t\n\t/**\n\t * Determine the type of a character in a keypath.\n\t *\n\t * @param {Char} ch\n\t * @return {String} type\n\t */\n\t\n\tfunction getPathCharType(ch) {\n\t if (ch === undefined) {\n\t return 'eof';\n\t }\n\t\n\t var code = ch.charCodeAt(0);\n\t\n\t switch (code) {\n\t case 0x5B: // [\n\t case 0x5D: // ]\n\t case 0x2E: // .\n\t case 0x22: // \"\n\t case 0x27: // '\n\t case 0x30:\n\t // 0\n\t return ch;\n\t\n\t case 0x5F: // _\n\t case 0x24:\n\t // $\n\t return 'ident';\n\t\n\t case 0x20: // Space\n\t case 0x09: // Tab\n\t case 0x0A: // Newline\n\t case 0x0D: // Return\n\t case 0xA0: // No-break space\n\t case 0xFEFF: // Byte Order Mark\n\t case 0x2028: // Line Separator\n\t case 0x2029:\n\t // Paragraph Separator\n\t return 'ws';\n\t }\n\t\n\t // a-z, A-Z\n\t if (code >= 0x61 && code <= 0x7A || code >= 0x41 && code <= 0x5A) {\n\t return 'ident';\n\t }\n\t\n\t // 1-9\n\t if (code >= 0x31 && code <= 0x39) {\n\t return 'number';\n\t }\n\t\n\t return 'else';\n\t}\n\t\n\t/**\n\t * Format a subPath, return its plain form if it is\n\t * a literal string or number. Otherwise prepend the\n\t * dynamic indicator (*).\n\t *\n\t * @param {String} path\n\t * @return {String}\n\t */\n\t\n\tfunction formatSubPath(path) {\n\t var trimmed = path.trim();\n\t // invalid leading 0\n\t if (path.charAt(0) === '0' && isNaN(path)) {\n\t return false;\n\t }\n\t return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed;\n\t}\n\t\n\t/**\n\t * Parse a string path into an array of segments\n\t *\n\t * @param {String} path\n\t * @return {Array|undefined}\n\t */\n\t\n\tfunction parse(path) {\n\t var keys = [];\n\t var index = -1;\n\t var mode = BEFORE_PATH;\n\t var subPathDepth = 0;\n\t var c, newChar, key, type, transition, action, typeMap;\n\t\n\t var actions = [];\n\t\n\t actions[PUSH] = function () {\n\t if (key !== undefined) {\n\t keys.push(key);\n\t key = undefined;\n\t }\n\t };\n\t\n\t actions[APPEND] = function () {\n\t if (key === undefined) {\n\t key = newChar;\n\t } else {\n\t key += newChar;\n\t }\n\t };\n\t\n\t actions[INC_SUB_PATH_DEPTH] = function () {\n\t actions[APPEND]();\n\t subPathDepth++;\n\t };\n\t\n\t actions[PUSH_SUB_PATH] = function () {\n\t if (subPathDepth > 0) {\n\t subPathDepth--;\n\t mode = IN_SUB_PATH;\n\t actions[APPEND]();\n\t } else {\n\t subPathDepth = 0;\n\t key = formatSubPath(key);\n\t if (key === false) {\n\t return false;\n\t } else {\n\t actions[PUSH]();\n\t }\n\t }\n\t };\n\t\n\t function maybeUnescapeQuote() {\n\t var nextChar = path[index + 1];\n\t if (mode === IN_SINGLE_QUOTE && nextChar === \"'\" || mode === IN_DOUBLE_QUOTE && nextChar === '\"') {\n\t index++;\n\t newChar = '\\\\' + nextChar;\n\t actions[APPEND]();\n\t return true;\n\t }\n\t }\n\t\n\t while (mode != null) {\n\t index++;\n\t c = path[index];\n\t\n\t if (c === '\\\\' && maybeUnescapeQuote()) {\n\t continue;\n\t }\n\t\n\t type = getPathCharType(c);\n\t typeMap = pathStateMachine[mode];\n\t transition = typeMap[type] || typeMap['else'] || ERROR;\n\t\n\t if (transition === ERROR) {\n\t return; // parse error\n\t }\n\t\n\t mode = transition[0];\n\t action = actions[transition[1]];\n\t if (action) {\n\t newChar = transition[2];\n\t newChar = newChar === undefined ? c : newChar;\n\t if (action() === false) {\n\t return;\n\t }\n\t }\n\t\n\t if (mode === AFTER_PATH) {\n\t keys.raw = path;\n\t return keys;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * External parse that check for a cache hit first\n\t *\n\t * @param {String} path\n\t * @return {Array|undefined}\n\t */\n\t\n\tfunction parsePath(path) {\n\t var hit = pathCache.get(path);\n\t if (!hit) {\n\t hit = parse(path);\n\t if (hit) {\n\t pathCache.put(path, hit);\n\t }\n\t }\n\t return hit;\n\t}\n\t\n\t/**\n\t * Get from an object from a path string\n\t *\n\t * @param {Object} obj\n\t * @param {String} path\n\t */\n\t\n\tfunction getPath(obj, path) {\n\t return parseExpression(path).get(obj);\n\t}\n\t\n\t/**\n\t * Warn against setting non-existent root path on a vm.\n\t */\n\t\n\tvar warnNonExistent;\n\tif (false) {\n\t warnNonExistent = function (path, vm) {\n\t warn('You are setting a non-existent path \"' + path.raw + '\" ' + 'on a vm instance. Consider pre-initializing the property ' + 'with the \"data\" option for more reliable reactivity ' + 'and better performance.', vm);\n\t };\n\t}\n\t\n\t/**\n\t * Set on an object from a path\n\t *\n\t * @param {Object} obj\n\t * @param {String | Array} path\n\t * @param {*} val\n\t */\n\t\n\tfunction setPath(obj, path, val) {\n\t var original = obj;\n\t if (typeof path === 'string') {\n\t path = parse(path);\n\t }\n\t if (!path || !isObject(obj)) {\n\t return false;\n\t }\n\t var last, key;\n\t for (var i = 0, l = path.length; i < l; i++) {\n\t last = obj;\n\t key = path[i];\n\t if (key.charAt(0) === '*') {\n\t key = parseExpression(key.slice(1)).get.call(original, original);\n\t }\n\t if (i < l - 1) {\n\t obj = obj[key];\n\t if (!isObject(obj)) {\n\t obj = {};\n\t if (false) {\n\t warnNonExistent(path, last);\n\t }\n\t set(last, key, obj);\n\t }\n\t } else {\n\t if (isArray(obj)) {\n\t obj.$set(key, val);\n\t } else if (key in obj) {\n\t obj[key] = val;\n\t } else {\n\t if (false) {\n\t warnNonExistent(path, obj);\n\t }\n\t set(obj, key, val);\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tvar path = Object.freeze({\n\t parsePath: parsePath,\n\t getPath: getPath,\n\t setPath: setPath\n\t});\n\t\n\tvar expressionCache = new Cache(1000);\n\t\n\tvar allowedKeywords = 'Math,Date,this,true,false,null,undefined,Infinity,NaN,' + 'isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,' + 'encodeURIComponent,parseInt,parseFloat';\n\tvar allowedKeywordsRE = new RegExp('^(' + allowedKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\t\n\t// keywords that don't make sense inside expressions\n\tvar improperKeywords = 'break,case,class,catch,const,continue,debugger,default,' + 'delete,do,else,export,extends,finally,for,function,if,' + 'import,in,instanceof,let,return,super,switch,throw,try,' + 'var,while,with,yield,enum,await,implements,package,' + 'protected,static,interface,private,public';\n\tvar improperKeywordsRE = new RegExp('^(' + improperKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\t\n\tvar wsRE = /\\s/g;\n\tvar newlineRE = /\\n/g;\n\tvar saveRE = /[\\{,]\\s*[\\w\\$_]+\\s*:|('(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`)|new |typeof |void /g;\n\tvar restoreRE = /\"(\\d+)\"/g;\n\tvar pathTestRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?'\\]|\\[\".*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/;\n\tvar identRE = /[^\\w$\\.](?:[A-Za-z_$][\\w$]*)/g;\n\tvar literalValueRE$1 = /^(?:true|false|null|undefined|Infinity|NaN)$/;\n\t\n\tfunction noop() {}\n\t\n\t/**\n\t * Save / Rewrite / Restore\n\t *\n\t * When rewriting paths found in an expression, it is\n\t * possible for the same letter sequences to be found in\n\t * strings and Object literal property keys. Therefore we\n\t * remove and store these parts in a temporary array, and\n\t * restore them after the path rewrite.\n\t */\n\t\n\tvar saved = [];\n\t\n\t/**\n\t * Save replacer\n\t *\n\t * The save regex can match two possible cases:\n\t * 1. An opening object literal\n\t * 2. A string\n\t * If matched as a plain string, we need to escape its\n\t * newlines, since the string needs to be preserved when\n\t * generating the function body.\n\t *\n\t * @param {String} str\n\t * @param {String} isString - str if matched as a string\n\t * @return {String} - placeholder with index\n\t */\n\t\n\tfunction save(str, isString) {\n\t var i = saved.length;\n\t saved[i] = isString ? str.replace(newlineRE, '\\\\n') : str;\n\t return '\"' + i + '\"';\n\t}\n\t\n\t/**\n\t * Path rewrite replacer\n\t *\n\t * @param {String} raw\n\t * @return {String}\n\t */\n\t\n\tfunction rewrite(raw) {\n\t var c = raw.charAt(0);\n\t var path = raw.slice(1);\n\t if (allowedKeywordsRE.test(path)) {\n\t return raw;\n\t } else {\n\t path = path.indexOf('\"') > -1 ? path.replace(restoreRE, restore) : path;\n\t return c + 'scope.' + path;\n\t }\n\t}\n\t\n\t/**\n\t * Restore replacer\n\t *\n\t * @param {String} str\n\t * @param {String} i - matched save index\n\t * @return {String}\n\t */\n\t\n\tfunction restore(str, i) {\n\t return saved[i];\n\t}\n\t\n\t/**\n\t * Rewrite an expression, prefixing all path accessors with\n\t * `scope.` and generate getter/setter functions.\n\t *\n\t * @param {String} exp\n\t * @return {Function}\n\t */\n\t\n\tfunction compileGetter(exp) {\n\t if (improperKeywordsRE.test(exp)) {\n\t (\"production\") !== 'production' && warn('Avoid using reserved keywords in expression: ' + exp);\n\t }\n\t // reset state\n\t saved.length = 0;\n\t // save strings and object literal keys\n\t var body = exp.replace(saveRE, save).replace(wsRE, '');\n\t // rewrite all paths\n\t // pad 1 space here because the regex matches 1 extra char\n\t body = (' ' + body).replace(identRE, rewrite).replace(restoreRE, restore);\n\t return makeGetterFn(body);\n\t}\n\t\n\t/**\n\t * Build a getter function. Requires eval.\n\t *\n\t * We isolate the try/catch so it doesn't affect the\n\t * optimization of the parse function when it is not called.\n\t *\n\t * @param {String} body\n\t * @return {Function|undefined}\n\t */\n\t\n\tfunction makeGetterFn(body) {\n\t try {\n\t /* eslint-disable no-new-func */\n\t return new Function('scope', 'return ' + body + ';');\n\t /* eslint-enable no-new-func */\n\t } catch (e) {\n\t if (false) {\n\t /* istanbul ignore if */\n\t if (e.toString().match(/unsafe-eval|CSP/)) {\n\t warn('It seems you are using the default build of Vue.js in an environment ' + 'with Content Security Policy that prohibits unsafe-eval. ' + 'Use the CSP-compliant build instead: ' + 'http://vuejs.org/guide/installation.html#CSP-compliant-build');\n\t } else {\n\t warn('Invalid expression. ' + 'Generated function body: ' + body);\n\t }\n\t }\n\t return noop;\n\t }\n\t}\n\t\n\t/**\n\t * Compile a setter function for the expression.\n\t *\n\t * @param {String} exp\n\t * @return {Function|undefined}\n\t */\n\t\n\tfunction compileSetter(exp) {\n\t var path = parsePath(exp);\n\t if (path) {\n\t return function (scope, val) {\n\t setPath(scope, path, val);\n\t };\n\t } else {\n\t (\"production\") !== 'production' && warn('Invalid setter expression: ' + exp);\n\t }\n\t}\n\t\n\t/**\n\t * Parse an expression into re-written getter/setters.\n\t *\n\t * @param {String} exp\n\t * @param {Boolean} needSet\n\t * @return {Function}\n\t */\n\t\n\tfunction parseExpression(exp, needSet) {\n\t exp = exp.trim();\n\t // try cache\n\t var hit = expressionCache.get(exp);\n\t if (hit) {\n\t if (needSet && !hit.set) {\n\t hit.set = compileSetter(hit.exp);\n\t }\n\t return hit;\n\t }\n\t var res = { exp: exp };\n\t res.get = isSimplePath(exp) && exp.indexOf('[') < 0\n\t // optimized super simple getter\n\t ? makeGetterFn('scope.' + exp)\n\t // dynamic getter\n\t : compileGetter(exp);\n\t if (needSet) {\n\t res.set = compileSetter(exp);\n\t }\n\t expressionCache.put(exp, res);\n\t return res;\n\t}\n\t\n\t/**\n\t * Check if an expression is a simple path.\n\t *\n\t * @param {String} exp\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isSimplePath(exp) {\n\t return pathTestRE.test(exp) &&\n\t // don't treat literal values as paths\n\t !literalValueRE$1.test(exp) &&\n\t // Math constants e.g. Math.PI, Math.E etc.\n\t exp.slice(0, 5) !== 'Math.';\n\t}\n\t\n\tvar expression = Object.freeze({\n\t parseExpression: parseExpression,\n\t isSimplePath: isSimplePath\n\t});\n\t\n\t// we have two separate queues: one for directive updates\n\t// and one for user watcher registered via $watch().\n\t// we want to guarantee directive updates to be called\n\t// before user watchers so that when user watchers are\n\t// triggered, the DOM would have already been in updated\n\t// state.\n\t\n\tvar queue = [];\n\tvar userQueue = [];\n\tvar has = {};\n\tvar circular = {};\n\tvar waiting = false;\n\t\n\t/**\n\t * Reset the batcher's state.\n\t */\n\t\n\tfunction resetBatcherState() {\n\t queue.length = 0;\n\t userQueue.length = 0;\n\t has = {};\n\t circular = {};\n\t waiting = false;\n\t}\n\t\n\t/**\n\t * Flush both queues and run the watchers.\n\t */\n\t\n\tfunction flushBatcherQueue() {\n\t var _again = true;\n\t\n\t _function: while (_again) {\n\t _again = false;\n\t\n\t runBatcherQueue(queue);\n\t runBatcherQueue(userQueue);\n\t // user watchers triggered more watchers,\n\t // keep flushing until it depletes\n\t if (queue.length) {\n\t _again = true;\n\t continue _function;\n\t }\n\t // dev tool hook\n\t /* istanbul ignore if */\n\t if (devtools && config.devtools) {\n\t devtools.emit('flush');\n\t }\n\t resetBatcherState();\n\t }\n\t}\n\t\n\t/**\n\t * Run the watchers in a single queue.\n\t *\n\t * @param {Array} queue\n\t */\n\t\n\tfunction runBatcherQueue(queue) {\n\t // do not cache length because more watchers might be pushed\n\t // as we run existing watchers\n\t for (var i = 0; i < queue.length; i++) {\n\t var watcher = queue[i];\n\t var id = watcher.id;\n\t has[id] = null;\n\t watcher.run();\n\t // in dev build, check and stop circular updates.\n\t if (false) {\n\t circular[id] = (circular[id] || 0) + 1;\n\t if (circular[id] > config._maxUpdateCount) {\n\t warn('You may have an infinite update loop for watcher ' + 'with expression \"' + watcher.expression + '\"', watcher.vm);\n\t break;\n\t }\n\t }\n\t }\n\t queue.length = 0;\n\t}\n\t\n\t/**\n\t * Push a watcher into the watcher queue.\n\t * Jobs with duplicate IDs will be skipped unless it's\n\t * pushed when the queue is being flushed.\n\t *\n\t * @param {Watcher} watcher\n\t * properties:\n\t * - {Number} id\n\t * - {Function} run\n\t */\n\t\n\tfunction pushWatcher(watcher) {\n\t var id = watcher.id;\n\t if (has[id] == null) {\n\t // push watcher into appropriate queue\n\t var q = watcher.user ? userQueue : queue;\n\t has[id] = q.length;\n\t q.push(watcher);\n\t // queue the flush\n\t if (!waiting) {\n\t waiting = true;\n\t nextTick(flushBatcherQueue);\n\t }\n\t }\n\t}\n\t\n\tvar uid$2 = 0;\n\t\n\t/**\n\t * A watcher parses an expression, collects dependencies,\n\t * and fires callback when the expression value changes.\n\t * This is used for both the $watch() api and directives.\n\t *\n\t * @param {Vue} vm\n\t * @param {String|Function} expOrFn\n\t * @param {Function} cb\n\t * @param {Object} options\n\t * - {Array} filters\n\t * - {Boolean} twoWay\n\t * - {Boolean} deep\n\t * - {Boolean} user\n\t * - {Boolean} sync\n\t * - {Boolean} lazy\n\t * - {Function} [preProcess]\n\t * - {Function} [postProcess]\n\t * @constructor\n\t */\n\tfunction Watcher(vm, expOrFn, cb, options) {\n\t // mix in options\n\t if (options) {\n\t extend(this, options);\n\t }\n\t var isFn = typeof expOrFn === 'function';\n\t this.vm = vm;\n\t vm._watchers.push(this);\n\t this.expression = expOrFn;\n\t this.cb = cb;\n\t this.id = ++uid$2; // uid for batching\n\t this.active = true;\n\t this.dirty = this.lazy; // for lazy watchers\n\t this.deps = [];\n\t this.newDeps = [];\n\t this.depIds = new _Set();\n\t this.newDepIds = new _Set();\n\t this.prevError = null; // for async error stacks\n\t // parse expression for getter/setter\n\t if (isFn) {\n\t this.getter = expOrFn;\n\t this.setter = undefined;\n\t } else {\n\t var res = parseExpression(expOrFn, this.twoWay);\n\t this.getter = res.get;\n\t this.setter = res.set;\n\t }\n\t this.value = this.lazy ? undefined : this.get();\n\t // state for avoiding false triggers for deep and Array\n\t // watchers during vm._digest()\n\t this.queued = this.shallow = false;\n\t}\n\t\n\t/**\n\t * Evaluate the getter, and re-collect dependencies.\n\t */\n\t\n\tWatcher.prototype.get = function () {\n\t this.beforeGet();\n\t var scope = this.scope || this.vm;\n\t var value;\n\t try {\n\t value = this.getter.call(scope, scope);\n\t } catch (e) {\n\t if (false) {\n\t warn('Error when evaluating expression ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n\t }\n\t }\n\t // \"touch\" every property so they are all tracked as\n\t // dependencies for deep watching\n\t if (this.deep) {\n\t traverse(value);\n\t }\n\t if (this.preProcess) {\n\t value = this.preProcess(value);\n\t }\n\t if (this.filters) {\n\t value = scope._applyFilters(value, null, this.filters, false);\n\t }\n\t if (this.postProcess) {\n\t value = this.postProcess(value);\n\t }\n\t this.afterGet();\n\t return value;\n\t};\n\t\n\t/**\n\t * Set the corresponding value with the setter.\n\t *\n\t * @param {*} value\n\t */\n\t\n\tWatcher.prototype.set = function (value) {\n\t var scope = this.scope || this.vm;\n\t if (this.filters) {\n\t value = scope._applyFilters(value, this.value, this.filters, true);\n\t }\n\t try {\n\t this.setter.call(scope, scope, value);\n\t } catch (e) {\n\t if (false) {\n\t warn('Error when evaluating setter ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n\t }\n\t }\n\t // two-way sync for v-for alias\n\t var forContext = scope.$forContext;\n\t if (forContext && forContext.alias === this.expression) {\n\t if (forContext.filters) {\n\t (\"production\") !== 'production' && warn('It seems you are using two-way binding on ' + 'a v-for alias (' + this.expression + '), and the ' + 'v-for has filters. This will not work properly. ' + 'Either remove the filters or use an array of ' + 'objects and bind to object properties instead.', this.vm);\n\t return;\n\t }\n\t forContext._withLock(function () {\n\t if (scope.$key) {\n\t // original is an object\n\t forContext.rawValue[scope.$key] = value;\n\t } else {\n\t forContext.rawValue.$set(scope.$index, value);\n\t }\n\t });\n\t }\n\t};\n\t\n\t/**\n\t * Prepare for dependency collection.\n\t */\n\t\n\tWatcher.prototype.beforeGet = function () {\n\t Dep.target = this;\n\t};\n\t\n\t/**\n\t * Add a dependency to this directive.\n\t *\n\t * @param {Dep} dep\n\t */\n\t\n\tWatcher.prototype.addDep = function (dep) {\n\t var id = dep.id;\n\t if (!this.newDepIds.has(id)) {\n\t this.newDepIds.add(id);\n\t this.newDeps.push(dep);\n\t if (!this.depIds.has(id)) {\n\t dep.addSub(this);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Clean up for dependency collection.\n\t */\n\t\n\tWatcher.prototype.afterGet = function () {\n\t Dep.target = null;\n\t var i = this.deps.length;\n\t while (i--) {\n\t var dep = this.deps[i];\n\t if (!this.newDepIds.has(dep.id)) {\n\t dep.removeSub(this);\n\t }\n\t }\n\t var tmp = this.depIds;\n\t this.depIds = this.newDepIds;\n\t this.newDepIds = tmp;\n\t this.newDepIds.clear();\n\t tmp = this.deps;\n\t this.deps = this.newDeps;\n\t this.newDeps = tmp;\n\t this.newDeps.length = 0;\n\t};\n\t\n\t/**\n\t * Subscriber interface.\n\t * Will be called when a dependency changes.\n\t *\n\t * @param {Boolean} shallow\n\t */\n\t\n\tWatcher.prototype.update = function (shallow) {\n\t if (this.lazy) {\n\t this.dirty = true;\n\t } else if (this.sync || !config.async) {\n\t this.run();\n\t } else {\n\t // if queued, only overwrite shallow with non-shallow,\n\t // but not the other way around.\n\t this.shallow = this.queued ? shallow ? this.shallow : false : !!shallow;\n\t this.queued = true;\n\t // record before-push error stack in debug mode\n\t /* istanbul ignore if */\n\t if (false) {\n\t this.prevError = new Error('[vue] async stack trace');\n\t }\n\t pushWatcher(this);\n\t }\n\t};\n\t\n\t/**\n\t * Batcher job interface.\n\t * Will be called by the batcher.\n\t */\n\t\n\tWatcher.prototype.run = function () {\n\t if (this.active) {\n\t var value = this.get();\n\t if (value !== this.value ||\n\t // Deep watchers and watchers on Object/Arrays should fire even\n\t // when the value is the same, because the value may\n\t // have mutated; but only do so if this is a\n\t // non-shallow update (caused by a vm digest).\n\t (isObject(value) || this.deep) && !this.shallow) {\n\t // set new value\n\t var oldValue = this.value;\n\t this.value = value;\n\t // in debug + async mode, when a watcher callbacks\n\t // throws, we also throw the saved before-push error\n\t // so the full cross-tick stack trace is available.\n\t var prevError = this.prevError;\n\t /* istanbul ignore if */\n\t if (false) {\n\t this.prevError = null;\n\t try {\n\t this.cb.call(this.vm, value, oldValue);\n\t } catch (e) {\n\t nextTick(function () {\n\t throw prevError;\n\t }, 0);\n\t throw e;\n\t }\n\t } else {\n\t this.cb.call(this.vm, value, oldValue);\n\t }\n\t }\n\t this.queued = this.shallow = false;\n\t }\n\t};\n\t\n\t/**\n\t * Evaluate the value of the watcher.\n\t * This only gets called for lazy watchers.\n\t */\n\t\n\tWatcher.prototype.evaluate = function () {\n\t // avoid overwriting another watcher that is being\n\t // collected.\n\t var current = Dep.target;\n\t this.value = this.get();\n\t this.dirty = false;\n\t Dep.target = current;\n\t};\n\t\n\t/**\n\t * Depend on all deps collected by this watcher.\n\t */\n\t\n\tWatcher.prototype.depend = function () {\n\t var i = this.deps.length;\n\t while (i--) {\n\t this.deps[i].depend();\n\t }\n\t};\n\t\n\t/**\n\t * Remove self from all dependencies' subcriber list.\n\t */\n\t\n\tWatcher.prototype.teardown = function () {\n\t if (this.active) {\n\t // remove self from vm's watcher list\n\t // this is a somewhat expensive operation so we skip it\n\t // if the vm is being destroyed or is performing a v-for\n\t // re-render (the watcher list is then filtered by v-for).\n\t if (!this.vm._isBeingDestroyed && !this.vm._vForRemoving) {\n\t this.vm._watchers.$remove(this);\n\t }\n\t var i = this.deps.length;\n\t while (i--) {\n\t this.deps[i].removeSub(this);\n\t }\n\t this.active = false;\n\t this.vm = this.cb = this.value = null;\n\t }\n\t};\n\t\n\t/**\n\t * Recrusively traverse an object to evoke all converted\n\t * getters, so that every nested property inside the object\n\t * is collected as a \"deep\" dependency.\n\t *\n\t * @param {*} val\n\t */\n\t\n\tvar seenObjects = new _Set();\n\tfunction traverse(val, seen) {\n\t var i = undefined,\n\t keys = undefined;\n\t if (!seen) {\n\t seen = seenObjects;\n\t seen.clear();\n\t }\n\t var isA = isArray(val);\n\t var isO = isObject(val);\n\t if ((isA || isO) && Object.isExtensible(val)) {\n\t if (val.__ob__) {\n\t var depId = val.__ob__.dep.id;\n\t if (seen.has(depId)) {\n\t return;\n\t } else {\n\t seen.add(depId);\n\t }\n\t }\n\t if (isA) {\n\t i = val.length;\n\t while (i--) traverse(val[i], seen);\n\t } else if (isO) {\n\t keys = Object.keys(val);\n\t i = keys.length;\n\t while (i--) traverse(val[keys[i]], seen);\n\t }\n\t }\n\t}\n\t\n\tvar text$1 = {\n\t\n\t bind: function bind() {\n\t this.attr = this.el.nodeType === 3 ? 'data' : 'textContent';\n\t },\n\t\n\t update: function update(value) {\n\t this.el[this.attr] = _toString(value);\n\t }\n\t};\n\t\n\tvar templateCache = new Cache(1000);\n\tvar idSelectorCache = new Cache(1000);\n\t\n\tvar map = {\n\t efault: [0, '', ''],\n\t legend: [1, '
', '
'],\n\t tr: [2, '', '
'],\n\t col: [2, '', '
']\n\t};\n\t\n\tmap.td = map.th = [3, '', '
'];\n\t\n\tmap.option = map.optgroup = [1, ''];\n\t\n\tmap.thead = map.tbody = map.colgroup = map.caption = map.tfoot = [1, '', '
'];\n\t\n\tmap.g = map.defs = map.symbol = map.use = map.image = map.text = map.circle = map.ellipse = map.line = map.path = map.polygon = map.polyline = map.rect = [1, '', ''];\n\t\n\t/**\n\t * Check if a node is a supported template node with a\n\t * DocumentFragment content.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isRealTemplate(node) {\n\t return isTemplate(node) && isFragment(node.content);\n\t}\n\t\n\tvar tagRE$1 = /<([\\w:-]+)/;\n\tvar entityRE = /&#?\\w+?;/;\n\tvar commentRE = / always true\n\t return true;\n\t } else if (number < 10) {\n\t // Only 1 digit\n\t if (4 <= number && number <= 7) {\n\t return true;\n\t }\n\t return false;\n\t } else if (number < 100) {\n\t // 2 digits\n\t var lastDigit = number % 10, firstDigit = number / 10;\n\t if (lastDigit === 0) {\n\t return eifelerRegelAppliesToNumber(firstDigit);\n\t }\n\t return eifelerRegelAppliesToNumber(lastDigit);\n\t } else if (number < 10000) {\n\t // 3 or 4 digits --> recursively check first digit\n\t while (number >= 10) {\n\t number = number / 10;\n\t }\n\t return eifelerRegelAppliesToNumber(number);\n\t } else {\n\t // Anything larger than 4 digits: recursively check first n-3 digits\n\t number = number / 1000;\n\t return eifelerRegelAppliesToNumber(number);\n\t }\n\t }\n\t\n\t var lb = moment.defineLocale('lb', {\n\t months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n\t monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n\t monthsParseExact : true,\n\t weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n\t weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n\t weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat: {\n\t LT: 'H:mm [Auer]',\n\t LTS: 'H:mm:ss [Auer]',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm [Auer]',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n\t },\n\t calendar: {\n\t sameDay: '[Haut um] LT',\n\t sameElse: 'L',\n\t nextDay: '[Muer um] LT',\n\t nextWeek: 'dddd [um] LT',\n\t lastDay: '[Gëschter um] LT',\n\t lastWeek: function () {\n\t // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n\t switch (this.day()) {\n\t case 2:\n\t case 4:\n\t return '[Leschten] dddd [um] LT';\n\t default:\n\t return '[Leschte] dddd [um] LT';\n\t }\n\t }\n\t },\n\t relativeTime : {\n\t future : processFutureTime,\n\t past : processPastTime,\n\t s : 'e puer Sekonnen',\n\t m : processRelativeTime,\n\t mm : '%d Minutten',\n\t h : processRelativeTime,\n\t hh : '%d Stonnen',\n\t d : processRelativeTime,\n\t dd : '%d Deeg',\n\t M : processRelativeTime,\n\t MM : '%d Méint',\n\t y : processRelativeTime,\n\t yy : '%d Joer'\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return lb;\n\t\n\t}));\n\n/***/ },\n/* 141 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Lao [lo]\n\t//! author : Ryan Hart : https://github.com/ryanhart2\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var lo = moment.defineLocale('lo', {\n\t months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n\t monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n\t weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n\t weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n\t weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n\t },\n\t meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n\t isPM: function (input) {\n\t return input === 'ຕອນແລງ';\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ຕອນເຊົ້າ';\n\t } else {\n\t return 'ຕອນແລງ';\n\t }\n\t },\n\t calendar : {\n\t sameDay : '[ມື້ນີ້ເວລາ] LT',\n\t nextDay : '[ມື້ອື່ນເວລາ] LT',\n\t nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n\t lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n\t lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'ອີກ %s',\n\t past : '%sຜ່ານມາ',\n\t s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n\t m : '1 ນາທີ',\n\t mm : '%d ນາທີ',\n\t h : '1 ຊົ່ວໂມງ',\n\t hh : '%d ຊົ່ວໂມງ',\n\t d : '1 ມື້',\n\t dd : '%d ມື້',\n\t M : '1 ເດືອນ',\n\t MM : '%d ເດືອນ',\n\t y : '1 ປີ',\n\t yy : '%d ປີ'\n\t },\n\t ordinalParse: /(ທີ່)\\d{1,2}/,\n\t ordinal : function (number) {\n\t return 'ທີ່' + number;\n\t }\n\t });\n\t\n\t return lo;\n\t\n\t}));\n\n/***/ },\n/* 142 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Lithuanian [lt]\n\t//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var units = {\n\t 'm' : 'minutė_minutės_minutę',\n\t 'mm': 'minutės_minučių_minutes',\n\t 'h' : 'valanda_valandos_valandą',\n\t 'hh': 'valandos_valandų_valandas',\n\t 'd' : 'diena_dienos_dieną',\n\t 'dd': 'dienos_dienų_dienas',\n\t 'M' : 'mėnuo_mėnesio_mėnesį',\n\t 'MM': 'mėnesiai_mėnesių_mėnesius',\n\t 'y' : 'metai_metų_metus',\n\t 'yy': 'metai_metų_metus'\n\t };\n\t function translateSeconds(number, withoutSuffix, key, isFuture) {\n\t if (withoutSuffix) {\n\t return 'kelios sekundės';\n\t } else {\n\t return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n\t }\n\t }\n\t function translateSingular(number, withoutSuffix, key, isFuture) {\n\t return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n\t }\n\t function special(number) {\n\t return number % 10 === 0 || (number > 10 && number < 20);\n\t }\n\t function forms(key) {\n\t return units[key].split('_');\n\t }\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t if (number === 1) {\n\t return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n\t } else if (withoutSuffix) {\n\t return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n\t } else {\n\t if (isFuture) {\n\t return result + forms(key)[1];\n\t } else {\n\t return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n\t }\n\t }\n\t }\n\t var lt = moment.defineLocale('lt', {\n\t months : {\n\t format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n\t standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n\t isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s+)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s+)+D[oD]?/\n\t },\n\t monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n\t weekdays : {\n\t format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n\t standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n\t isFormat: /dddd HH:mm/\n\t },\n\t weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n\t weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'YYYY-MM-DD',\n\t LL : 'YYYY [m.] MMMM D [d.]',\n\t LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n\t LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n\t l : 'YYYY-MM-DD',\n\t ll : 'YYYY [m.] MMMM D [d.]',\n\t lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n\t llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n\t },\n\t calendar : {\n\t sameDay : '[Šiandien] LT',\n\t nextDay : '[Rytoj] LT',\n\t nextWeek : 'dddd LT',\n\t lastDay : '[Vakar] LT',\n\t lastWeek : '[Praėjusį] dddd LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'po %s',\n\t past : 'prieš %s',\n\t s : translateSeconds,\n\t m : translateSingular,\n\t mm : translate,\n\t h : translateSingular,\n\t hh : translate,\n\t d : translateSingular,\n\t dd : translate,\n\t M : translateSingular,\n\t MM : translate,\n\t y : translateSingular,\n\t yy : translate\n\t },\n\t ordinalParse: /\\d{1,2}-oji/,\n\t ordinal : function (number) {\n\t return number + '-oji';\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return lt;\n\t\n\t}));\n\n/***/ },\n/* 143 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Latvian [lv]\n\t//! author : Kristaps Karlsons : https://github.com/skakri\n\t//! author : Jānis Elmeris : https://github.com/JanisE\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var units = {\n\t 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n\t 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n\t 'h': 'stundas_stundām_stunda_stundas'.split('_'),\n\t 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n\t 'd': 'dienas_dienām_diena_dienas'.split('_'),\n\t 'dd': 'dienas_dienām_diena_dienas'.split('_'),\n\t 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n\t 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n\t 'y': 'gada_gadiem_gads_gadi'.split('_'),\n\t 'yy': 'gada_gadiem_gads_gadi'.split('_')\n\t };\n\t /**\n\t * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n\t */\n\t function format(forms, number, withoutSuffix) {\n\t if (withoutSuffix) {\n\t // E.g. \"21 minūte\", \"3 minūtes\".\n\t return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n\t } else {\n\t // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n\t // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n\t return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n\t }\n\t }\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t return number + ' ' + format(units[key], number, withoutSuffix);\n\t }\n\t function relativeTimeWithSingular(number, withoutSuffix, key) {\n\t return format(units[key], number, withoutSuffix);\n\t }\n\t function relativeSeconds(number, withoutSuffix) {\n\t return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n\t }\n\t\n\t var lv = moment.defineLocale('lv', {\n\t months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n\t monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n\t weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n\t weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n\t weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY.',\n\t LL : 'YYYY. [gada] D. MMMM',\n\t LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n\t LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n\t },\n\t calendar : {\n\t sameDay : '[Šodien pulksten] LT',\n\t nextDay : '[Rīt pulksten] LT',\n\t nextWeek : 'dddd [pulksten] LT',\n\t lastDay : '[Vakar pulksten] LT',\n\t lastWeek : '[Pagājušā] dddd [pulksten] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'pēc %s',\n\t past : 'pirms %s',\n\t s : relativeSeconds,\n\t m : relativeTimeWithSingular,\n\t mm : relativeTimeWithPlural,\n\t h : relativeTimeWithSingular,\n\t hh : relativeTimeWithPlural,\n\t d : relativeTimeWithSingular,\n\t dd : relativeTimeWithPlural,\n\t M : relativeTimeWithSingular,\n\t MM : relativeTimeWithPlural,\n\t y : relativeTimeWithSingular,\n\t yy : relativeTimeWithPlural\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return lv;\n\t\n\t}));\n\n/***/ },\n/* 144 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Montenegrin [me]\n\t//! author : Miodrag Nikač : https://github.com/miodragnikac\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var translator = {\n\t words: { //Different grammatical cases\n\t m: ['jedan minut', 'jednog minuta'],\n\t mm: ['minut', 'minuta', 'minuta'],\n\t h: ['jedan sat', 'jednog sata'],\n\t hh: ['sat', 'sata', 'sati'],\n\t dd: ['dan', 'dana', 'dana'],\n\t MM: ['mjesec', 'mjeseca', 'mjeseci'],\n\t yy: ['godina', 'godine', 'godina']\n\t },\n\t correctGrammaticalCase: function (number, wordKey) {\n\t return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n\t },\n\t translate: function (number, withoutSuffix, key) {\n\t var wordKey = translator.words[key];\n\t if (key.length === 1) {\n\t return withoutSuffix ? wordKey[0] : wordKey[1];\n\t } else {\n\t return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n\t }\n\t }\n\t };\n\t\n\t var me = moment.defineLocale('me', {\n\t months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n\t monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n\t monthsParseExact : true,\n\t weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n\t weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n\t weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS : 'H:mm:ss',\n\t L: 'DD. MM. YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm'\n\t },\n\t calendar: {\n\t sameDay: '[danas u] LT',\n\t nextDay: '[sjutra u] LT',\n\t\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[u] [nedjelju] [u] LT';\n\t case 3:\n\t return '[u] [srijedu] [u] LT';\n\t case 6:\n\t return '[u] [subotu] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[u] dddd [u] LT';\n\t }\n\t },\n\t lastDay : '[juče u] LT',\n\t lastWeek : function () {\n\t var lastWeekDays = [\n\t '[prošle] [nedjelje] [u] LT',\n\t '[prošlog] [ponedjeljka] [u] LT',\n\t '[prošlog] [utorka] [u] LT',\n\t '[prošle] [srijede] [u] LT',\n\t '[prošlog] [četvrtka] [u] LT',\n\t '[prošlog] [petka] [u] LT',\n\t '[prošle] [subote] [u] LT'\n\t ];\n\t return lastWeekDays[this.day()];\n\t },\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'za %s',\n\t past : 'prije %s',\n\t s : 'nekoliko sekundi',\n\t m : translator.translate,\n\t mm : translator.translate,\n\t h : translator.translate,\n\t hh : translator.translate,\n\t d : 'dan',\n\t dd : translator.translate,\n\t M : 'mjesec',\n\t MM : translator.translate,\n\t y : 'godinu',\n\t yy : translator.translate\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return me;\n\t\n\t}));\n\n/***/ },\n/* 145 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Macedonian [mk]\n\t//! author : Borislav Mickov : https://github.com/B0k0\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var mk = moment.defineLocale('mk', {\n\t months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n\t monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n\t weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n\t weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n\t weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n\t longDateFormat : {\n\t LT : 'H:mm',\n\t LTS : 'H:mm:ss',\n\t L : 'D.MM.YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY H:mm',\n\t LLLL : 'dddd, D MMMM YYYY H:mm'\n\t },\n\t calendar : {\n\t sameDay : '[Денес во] LT',\n\t nextDay : '[Утре во] LT',\n\t nextWeek : '[Во] dddd [во] LT',\n\t lastDay : '[Вчера во] LT',\n\t lastWeek : function () {\n\t switch (this.day()) {\n\t case 0:\n\t case 3:\n\t case 6:\n\t return '[Изминатата] dddd [во] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[Изминатиот] dddd [во] LT';\n\t }\n\t },\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'после %s',\n\t past : 'пред %s',\n\t s : 'неколку секунди',\n\t m : 'минута',\n\t mm : '%d минути',\n\t h : 'час',\n\t hh : '%d часа',\n\t d : 'ден',\n\t dd : '%d дена',\n\t M : 'месец',\n\t MM : '%d месеци',\n\t y : 'година',\n\t yy : '%d години'\n\t },\n\t ordinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n\t ordinal : function (number) {\n\t var lastDigit = number % 10,\n\t last2Digits = number % 100;\n\t if (number === 0) {\n\t return number + '-ев';\n\t } else if (last2Digits === 0) {\n\t return number + '-ен';\n\t } else if (last2Digits > 10 && last2Digits < 20) {\n\t return number + '-ти';\n\t } else if (lastDigit === 1) {\n\t return number + '-ви';\n\t } else if (lastDigit === 2) {\n\t return number + '-ри';\n\t } else if (lastDigit === 7 || lastDigit === 8) {\n\t return number + '-ми';\n\t } else {\n\t return number + '-ти';\n\t }\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return mk;\n\t\n\t}));\n\n/***/ },\n/* 146 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Malayalam [ml]\n\t//! author : Floyd Pink : https://github.com/floydpink\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var ml = moment.defineLocale('ml', {\n\t months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n\t monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n\t weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n\t weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n\t longDateFormat : {\n\t LT : 'A h:mm -നു',\n\t LTS : 'A h:mm:ss -നു',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY, A h:mm -നു',\n\t LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n\t },\n\t calendar : {\n\t sameDay : '[ഇന്ന്] LT',\n\t nextDay : '[നാളെ] LT',\n\t nextWeek : 'dddd, LT',\n\t lastDay : '[ഇന്നലെ] LT',\n\t lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%s കഴിഞ്ഞ്',\n\t past : '%s മുൻപ്',\n\t s : 'അൽപ നിമിഷങ്ങൾ',\n\t m : 'ഒരു മിനിറ്റ്',\n\t mm : '%d മിനിറ്റ്',\n\t h : 'ഒരു മണിക്കൂർ',\n\t hh : '%d മണിക്കൂർ',\n\t d : 'ഒരു ദിവസം',\n\t dd : '%d ദിവസം',\n\t M : 'ഒരു മാസം',\n\t MM : '%d മാസം',\n\t y : 'ഒരു വർഷം',\n\t yy : '%d വർഷം'\n\t },\n\t meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if ((meridiem === 'രാത്രി' && hour >= 4) ||\n\t meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n\t meridiem === 'വൈകുന്നേരം') {\n\t return hour + 12;\n\t } else {\n\t return hour;\n\t }\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'രാത്രി';\n\t } else if (hour < 12) {\n\t return 'രാവിലെ';\n\t } else if (hour < 17) {\n\t return 'ഉച്ച കഴിഞ്ഞ്';\n\t } else if (hour < 20) {\n\t return 'വൈകുന്നേരം';\n\t } else {\n\t return 'രാത്രി';\n\t }\n\t }\n\t });\n\t\n\t return ml;\n\t\n\t}));\n\n/***/ },\n/* 147 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Marathi [mr]\n\t//! author : Harshad Kale : https://github.com/kalehv\n\t//! author : Vivek Athalye : https://github.com/vnathalye\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var symbolMap = {\n\t '1': '१',\n\t '2': '२',\n\t '3': '३',\n\t '4': '४',\n\t '5': '५',\n\t '6': '६',\n\t '7': '७',\n\t '8': '८',\n\t '9': '९',\n\t '0': '०'\n\t },\n\t numberMap = {\n\t '१': '1',\n\t '२': '2',\n\t '३': '3',\n\t '४': '4',\n\t '५': '5',\n\t '६': '6',\n\t '७': '7',\n\t '८': '8',\n\t '९': '9',\n\t '०': '0'\n\t };\n\t\n\t function relativeTimeMr(number, withoutSuffix, string, isFuture)\n\t {\n\t var output = '';\n\t if (withoutSuffix) {\n\t switch (string) {\n\t case 's': output = 'काही सेकंद'; break;\n\t case 'm': output = 'एक मिनिट'; break;\n\t case 'mm': output = '%d मिनिटे'; break;\n\t case 'h': output = 'एक तास'; break;\n\t case 'hh': output = '%d तास'; break;\n\t case 'd': output = 'एक दिवस'; break;\n\t case 'dd': output = '%d दिवस'; break;\n\t case 'M': output = 'एक महिना'; break;\n\t case 'MM': output = '%d महिने'; break;\n\t case 'y': output = 'एक वर्ष'; break;\n\t case 'yy': output = '%d वर्षे'; break;\n\t }\n\t }\n\t else {\n\t switch (string) {\n\t case 's': output = 'काही सेकंदां'; break;\n\t case 'm': output = 'एका मिनिटा'; break;\n\t case 'mm': output = '%d मिनिटां'; break;\n\t case 'h': output = 'एका तासा'; break;\n\t case 'hh': output = '%d तासां'; break;\n\t case 'd': output = 'एका दिवसा'; break;\n\t case 'dd': output = '%d दिवसां'; break;\n\t case 'M': output = 'एका महिन्या'; break;\n\t case 'MM': output = '%d महिन्यां'; break;\n\t case 'y': output = 'एका वर्षा'; break;\n\t case 'yy': output = '%d वर्षां'; break;\n\t }\n\t }\n\t return output.replace(/%d/i, number);\n\t }\n\t\n\t var mr = moment.defineLocale('mr', {\n\t months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n\t monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n\t weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n\t weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n\t longDateFormat : {\n\t LT : 'A h:mm वाजता',\n\t LTS : 'A h:mm:ss वाजता',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY, A h:mm वाजता',\n\t LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n\t },\n\t calendar : {\n\t sameDay : '[आज] LT',\n\t nextDay : '[उद्या] LT',\n\t nextWeek : 'dddd, LT',\n\t lastDay : '[काल] LT',\n\t lastWeek: '[मागील] dddd, LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future: '%sमध्ये',\n\t past: '%sपूर्वी',\n\t s: relativeTimeMr,\n\t m: relativeTimeMr,\n\t mm: relativeTimeMr,\n\t h: relativeTimeMr,\n\t hh: relativeTimeMr,\n\t d: relativeTimeMr,\n\t dd: relativeTimeMr,\n\t M: relativeTimeMr,\n\t MM: relativeTimeMr,\n\t y: relativeTimeMr,\n\t yy: relativeTimeMr\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[१२३४५६७८९०]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'रात्री') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'सकाळी') {\n\t return hour;\n\t } else if (meridiem === 'दुपारी') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'सायंकाळी') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'रात्री';\n\t } else if (hour < 10) {\n\t return 'सकाळी';\n\t } else if (hour < 17) {\n\t return 'दुपारी';\n\t } else if (hour < 20) {\n\t return 'सायंकाळी';\n\t } else {\n\t return 'रात्री';\n\t }\n\t },\n\t week : {\n\t dow : 0, // Sunday is the first day of the week.\n\t doy : 6 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return mr;\n\t\n\t}));\n\n/***/ },\n/* 148 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Malay [ms-my]\n\t//! note : DEPRECATED, the correct one is [ms]\n\t//! author : Weldan Jamili : https://github.com/weldan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var ms_my = moment.defineLocale('ms-my', {\n\t months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n\t monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n\t weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n\t weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n\t weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH.mm',\n\t LTS : 'HH.mm.ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY [pukul] HH.mm',\n\t LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n\t },\n\t meridiemParse: /pagi|tengahari|petang|malam/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'pagi') {\n\t return hour;\n\t } else if (meridiem === 'tengahari') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'petang' || meridiem === 'malam') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem : function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'pagi';\n\t } else if (hours < 15) {\n\t return 'tengahari';\n\t } else if (hours < 19) {\n\t return 'petang';\n\t } else {\n\t return 'malam';\n\t }\n\t },\n\t calendar : {\n\t sameDay : '[Hari ini pukul] LT',\n\t nextDay : '[Esok pukul] LT',\n\t nextWeek : 'dddd [pukul] LT',\n\t lastDay : '[Kelmarin pukul] LT',\n\t lastWeek : 'dddd [lepas pukul] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'dalam %s',\n\t past : '%s yang lepas',\n\t s : 'beberapa saat',\n\t m : 'seminit',\n\t mm : '%d minit',\n\t h : 'sejam',\n\t hh : '%d jam',\n\t d : 'sehari',\n\t dd : '%d hari',\n\t M : 'sebulan',\n\t MM : '%d bulan',\n\t y : 'setahun',\n\t yy : '%d tahun'\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return ms_my;\n\t\n\t}));\n\n/***/ },\n/* 149 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Malay [ms]\n\t//! author : Weldan Jamili : https://github.com/weldan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var ms = moment.defineLocale('ms', {\n\t months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n\t monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n\t weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n\t weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n\t weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH.mm',\n\t LTS : 'HH.mm.ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY [pukul] HH.mm',\n\t LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n\t },\n\t meridiemParse: /pagi|tengahari|petang|malam/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'pagi') {\n\t return hour;\n\t } else if (meridiem === 'tengahari') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'petang' || meridiem === 'malam') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem : function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'pagi';\n\t } else if (hours < 15) {\n\t return 'tengahari';\n\t } else if (hours < 19) {\n\t return 'petang';\n\t } else {\n\t return 'malam';\n\t }\n\t },\n\t calendar : {\n\t sameDay : '[Hari ini pukul] LT',\n\t nextDay : '[Esok pukul] LT',\n\t nextWeek : 'dddd [pukul] LT',\n\t lastDay : '[Kelmarin pukul] LT',\n\t lastWeek : 'dddd [lepas pukul] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'dalam %s',\n\t past : '%s yang lepas',\n\t s : 'beberapa saat',\n\t m : 'seminit',\n\t mm : '%d minit',\n\t h : 'sejam',\n\t hh : '%d jam',\n\t d : 'sehari',\n\t dd : '%d hari',\n\t M : 'sebulan',\n\t MM : '%d bulan',\n\t y : 'setahun',\n\t yy : '%d tahun'\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return ms;\n\t\n\t}));\n\n/***/ },\n/* 150 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Burmese [my]\n\t//! author : Squar team, mysquar.com\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var symbolMap = {\n\t '1': '၁',\n\t '2': '၂',\n\t '3': '၃',\n\t '4': '၄',\n\t '5': '၅',\n\t '6': '၆',\n\t '7': '၇',\n\t '8': '၈',\n\t '9': '၉',\n\t '0': '၀'\n\t }, numberMap = {\n\t '၁': '1',\n\t '၂': '2',\n\t '၃': '3',\n\t '၄': '4',\n\t '၅': '5',\n\t '၆': '6',\n\t '၇': '7',\n\t '၈': '8',\n\t '၉': '9',\n\t '၀': '0'\n\t };\n\t\n\t var my = moment.defineLocale('my', {\n\t months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n\t monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n\t weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n\t weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\t weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\t\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm'\n\t },\n\t calendar: {\n\t sameDay: '[ယနေ.] LT [မှာ]',\n\t nextDay: '[မနက်ဖြန်] LT [မှာ]',\n\t nextWeek: 'dddd LT [မှာ]',\n\t lastDay: '[မနေ.က] LT [မှာ]',\n\t lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n\t sameElse: 'L'\n\t },\n\t relativeTime: {\n\t future: 'လာမည့် %s မှာ',\n\t past: 'လွန်ခဲ့သော %s က',\n\t s: 'စက္ကန်.အနည်းငယ်',\n\t m: 'တစ်မိနစ်',\n\t mm: '%d မိနစ်',\n\t h: 'တစ်နာရီ',\n\t hh: '%d နာရီ',\n\t d: 'တစ်ရက်',\n\t dd: '%d ရက်',\n\t M: 'တစ်လ',\n\t MM: '%d လ',\n\t y: 'တစ်နှစ်',\n\t yy: '%d နှစ်'\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return my;\n\t\n\t}));\n\n/***/ },\n/* 151 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Norwegian Bokmål [nb]\n\t//! authors : Espen Hovlandsdal : https://github.com/rexxars\n\t//! Sigurd Gartmann : https://github.com/sigurdga\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var nb = moment.defineLocale('nb', {\n\t months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n\t monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n\t weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n\t weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D. MMMM YYYY',\n\t LLL : 'D. MMMM YYYY [kl.] HH:mm',\n\t LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[i dag kl.] LT',\n\t nextDay: '[i morgen kl.] LT',\n\t nextWeek: 'dddd [kl.] LT',\n\t lastDay: '[i går kl.] LT',\n\t lastWeek: '[forrige] dddd [kl.] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'om %s',\n\t past : '%s siden',\n\t s : 'noen sekunder',\n\t m : 'ett minutt',\n\t mm : '%d minutter',\n\t h : 'en time',\n\t hh : '%d timer',\n\t d : 'en dag',\n\t dd : '%d dager',\n\t M : 'en måned',\n\t MM : '%d måneder',\n\t y : 'ett år',\n\t yy : '%d år'\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return nb;\n\t\n\t}));\n\n/***/ },\n/* 152 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Nepalese [ne]\n\t//! author : suvash : https://github.com/suvash\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var symbolMap = {\n\t '1': '१',\n\t '2': '२',\n\t '3': '३',\n\t '4': '४',\n\t '5': '५',\n\t '6': '६',\n\t '7': '७',\n\t '8': '८',\n\t '9': '९',\n\t '0': '०'\n\t },\n\t numberMap = {\n\t '१': '1',\n\t '२': '2',\n\t '३': '3',\n\t '४': '4',\n\t '५': '5',\n\t '६': '6',\n\t '७': '7',\n\t '८': '8',\n\t '९': '9',\n\t '०': '0'\n\t };\n\t\n\t var ne = moment.defineLocale('ne', {\n\t months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n\t monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n\t weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n\t weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'Aको h:mm बजे',\n\t LTS : 'Aको h:mm:ss बजे',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY, Aको h:mm बजे',\n\t LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[१२३४५६७८९०]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'राति') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'बिहान') {\n\t return hour;\n\t } else if (meridiem === 'दिउँसो') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'साँझ') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 3) {\n\t return 'राति';\n\t } else if (hour < 12) {\n\t return 'बिहान';\n\t } else if (hour < 16) {\n\t return 'दिउँसो';\n\t } else if (hour < 20) {\n\t return 'साँझ';\n\t } else {\n\t return 'राति';\n\t }\n\t },\n\t calendar : {\n\t sameDay : '[आज] LT',\n\t nextDay : '[भोलि] LT',\n\t nextWeek : '[आउँदो] dddd[,] LT',\n\t lastDay : '[हिजो] LT',\n\t lastWeek : '[गएको] dddd[,] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%sमा',\n\t past : '%s अगाडि',\n\t s : 'केही क्षण',\n\t m : 'एक मिनेट',\n\t mm : '%d मिनेट',\n\t h : 'एक घण्टा',\n\t hh : '%d घण्टा',\n\t d : 'एक दिन',\n\t dd : '%d दिन',\n\t M : 'एक महिना',\n\t MM : '%d महिना',\n\t y : 'एक बर्ष',\n\t yy : '%d बर्ष'\n\t },\n\t week : {\n\t dow : 0, // Sunday is the first day of the week.\n\t doy : 6 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return ne;\n\t\n\t}));\n\n/***/ },\n/* 153 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Dutch [nl]\n\t//! author : Joris Röling : https://github.com/jjupiter\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n\t monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\t\n\t var nl = moment.defineLocale('nl', {\n\t months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n\t monthsShort : function (m, format) {\n\t if (/-MMM-/.test(format)) {\n\t return monthsShortWithoutDots[m.month()];\n\t } else {\n\t return monthsShortWithDots[m.month()];\n\t }\n\t },\n\t monthsParseExact : true,\n\t weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n\t weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n\t weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD-MM-YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[vandaag om] LT',\n\t nextDay: '[morgen om] LT',\n\t nextWeek: 'dddd [om] LT',\n\t lastDay: '[gisteren om] LT',\n\t lastWeek: '[afgelopen] dddd [om] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'over %s',\n\t past : '%s geleden',\n\t s : 'een paar seconden',\n\t m : 'één minuut',\n\t mm : '%d minuten',\n\t h : 'één uur',\n\t hh : '%d uur',\n\t d : 'één dag',\n\t dd : '%d dagen',\n\t M : 'één maand',\n\t MM : '%d maanden',\n\t y : 'één jaar',\n\t yy : '%d jaar'\n\t },\n\t ordinalParse: /\\d{1,2}(ste|de)/,\n\t ordinal : function (number) {\n\t return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return nl;\n\t\n\t}));\n\n/***/ },\n/* 154 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Nynorsk [nn]\n\t//! author : https://github.com/mechuwind\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var nn = moment.defineLocale('nn', {\n\t months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n\t monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n\t weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n\t weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n\t weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D. MMMM YYYY',\n\t LLL : 'D. MMMM YYYY [kl.] H:mm',\n\t LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[I dag klokka] LT',\n\t nextDay: '[I morgon klokka] LT',\n\t nextWeek: 'dddd [klokka] LT',\n\t lastDay: '[I går klokka] LT',\n\t lastWeek: '[Føregåande] dddd [klokka] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'om %s',\n\t past : '%s sidan',\n\t s : 'nokre sekund',\n\t m : 'eit minutt',\n\t mm : '%d minutt',\n\t h : 'ein time',\n\t hh : '%d timar',\n\t d : 'ein dag',\n\t dd : '%d dagar',\n\t M : 'ein månad',\n\t MM : '%d månader',\n\t y : 'eit år',\n\t yy : '%d år'\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return nn;\n\t\n\t}));\n\n/***/ },\n/* 155 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Punjabi (India) [pa-in]\n\t//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var symbolMap = {\n\t '1': '੧',\n\t '2': '੨',\n\t '3': '੩',\n\t '4': '੪',\n\t '5': '੫',\n\t '6': '੬',\n\t '7': '੭',\n\t '8': '੮',\n\t '9': '੯',\n\t '0': '੦'\n\t },\n\t numberMap = {\n\t '੧': '1',\n\t '੨': '2',\n\t '੩': '3',\n\t '੪': '4',\n\t '੫': '5',\n\t '੬': '6',\n\t '੭': '7',\n\t '੮': '8',\n\t '੯': '9',\n\t '੦': '0'\n\t };\n\t\n\t var pa_in = moment.defineLocale('pa-in', {\n\t // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.\n\t months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n\t monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n\t weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n\t weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n\t weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n\t longDateFormat : {\n\t LT : 'A h:mm ਵਜੇ',\n\t LTS : 'A h:mm:ss ਵਜੇ',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n\t LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n\t },\n\t calendar : {\n\t sameDay : '[ਅਜ] LT',\n\t nextDay : '[ਕਲ] LT',\n\t nextWeek : 'dddd, LT',\n\t lastDay : '[ਕਲ] LT',\n\t lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%s ਵਿੱਚ',\n\t past : '%s ਪਿਛਲੇ',\n\t s : 'ਕੁਝ ਸਕਿੰਟ',\n\t m : 'ਇਕ ਮਿੰਟ',\n\t mm : '%d ਮਿੰਟ',\n\t h : 'ਇੱਕ ਘੰਟਾ',\n\t hh : '%d ਘੰਟੇ',\n\t d : 'ਇੱਕ ਦਿਨ',\n\t dd : '%d ਦਿਨ',\n\t M : 'ਇੱਕ ਮਹੀਨਾ',\n\t MM : '%d ਮਹੀਨੇ',\n\t y : 'ਇੱਕ ਸਾਲ',\n\t yy : '%d ਸਾਲ'\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n\t // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n\t meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'ਰਾਤ') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'ਸਵੇਰ') {\n\t return hour;\n\t } else if (meridiem === 'ਦੁਪਹਿਰ') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'ਸ਼ਾਮ') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ਰਾਤ';\n\t } else if (hour < 10) {\n\t return 'ਸਵੇਰ';\n\t } else if (hour < 17) {\n\t return 'ਦੁਪਹਿਰ';\n\t } else if (hour < 20) {\n\t return 'ਸ਼ਾਮ';\n\t } else {\n\t return 'ਰਾਤ';\n\t }\n\t },\n\t week : {\n\t dow : 0, // Sunday is the first day of the week.\n\t doy : 6 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return pa_in;\n\t\n\t}));\n\n/***/ },\n/* 156 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Polish [pl]\n\t//! author : Rafal Hirsz : https://github.com/evoL\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n\t monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n\t function plural(n) {\n\t return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n\t }\n\t function translate(number, withoutSuffix, key) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 'm':\n\t return withoutSuffix ? 'minuta' : 'minutę';\n\t case 'mm':\n\t return result + (plural(number) ? 'minuty' : 'minut');\n\t case 'h':\n\t return withoutSuffix ? 'godzina' : 'godzinę';\n\t case 'hh':\n\t return result + (plural(number) ? 'godziny' : 'godzin');\n\t case 'MM':\n\t return result + (plural(number) ? 'miesiące' : 'miesięcy');\n\t case 'yy':\n\t return result + (plural(number) ? 'lata' : 'lat');\n\t }\n\t }\n\t\n\t var pl = moment.defineLocale('pl', {\n\t months : function (momentToFormat, format) {\n\t if (format === '') {\n\t // Hack: if format empty we know this is used to generate\n\t // RegExp by moment. Give then back both valid forms of months\n\t // in RegExp ready format.\n\t return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n\t } else if (/D MMMM/.test(format)) {\n\t return monthsSubjective[momentToFormat.month()];\n\t } else {\n\t return monthsNominative[momentToFormat.month()];\n\t }\n\t },\n\t monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n\t weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n\t weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'),\n\t weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[Dziś o] LT',\n\t nextDay: '[Jutro o] LT',\n\t nextWeek: '[W] dddd [o] LT',\n\t lastDay: '[Wczoraj o] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[W zeszłą niedzielę o] LT';\n\t case 3:\n\t return '[W zeszłą środę o] LT';\n\t case 6:\n\t return '[W zeszłą sobotę o] LT';\n\t default:\n\t return '[W zeszły] dddd [o] LT';\n\t }\n\t },\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'za %s',\n\t past : '%s temu',\n\t s : 'kilka sekund',\n\t m : translate,\n\t mm : translate,\n\t h : translate,\n\t hh : translate,\n\t d : '1 dzień',\n\t dd : '%d dni',\n\t M : 'miesiąc',\n\t MM : translate,\n\t y : 'rok',\n\t yy : translate\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return pl;\n\t\n\t}));\n\n/***/ },\n/* 157 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Portuguese (Brazil) [pt-br]\n\t//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var pt_br = moment.defineLocale('pt-br', {\n\t months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n\t monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n\t weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n\t weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n\t weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D [de] MMMM [de] YYYY',\n\t LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n\t LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[Hoje às] LT',\n\t nextDay: '[Amanhã às] LT',\n\t nextWeek: 'dddd [às] LT',\n\t lastDay: '[Ontem às] LT',\n\t lastWeek: function () {\n\t return (this.day() === 0 || this.day() === 6) ?\n\t '[Último] dddd [às] LT' : // Saturday + Sunday\n\t '[Última] dddd [às] LT'; // Monday - Friday\n\t },\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'em %s',\n\t past : '%s atrás',\n\t s : 'poucos segundos',\n\t m : 'um minuto',\n\t mm : '%d minutos',\n\t h : 'uma hora',\n\t hh : '%d horas',\n\t d : 'um dia',\n\t dd : '%d dias',\n\t M : 'um mês',\n\t MM : '%d meses',\n\t y : 'um ano',\n\t yy : '%d anos'\n\t },\n\t ordinalParse: /\\d{1,2}º/,\n\t ordinal : '%dº'\n\t });\n\t\n\t return pt_br;\n\t\n\t}));\n\n/***/ },\n/* 158 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Portuguese [pt]\n\t//! author : Jefferson : https://github.com/jalex79\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var pt = moment.defineLocale('pt', {\n\t months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n\t monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n\t weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),\n\t weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n\t weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D [de] MMMM [de] YYYY',\n\t LLL : 'D [de] MMMM [de] YYYY HH:mm',\n\t LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[Hoje às] LT',\n\t nextDay: '[Amanhã às] LT',\n\t nextWeek: 'dddd [às] LT',\n\t lastDay: '[Ontem às] LT',\n\t lastWeek: function () {\n\t return (this.day() === 0 || this.day() === 6) ?\n\t '[Último] dddd [às] LT' : // Saturday + Sunday\n\t '[Última] dddd [às] LT'; // Monday - Friday\n\t },\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'em %s',\n\t past : 'há %s',\n\t s : 'segundos',\n\t m : 'um minuto',\n\t mm : '%d minutos',\n\t h : 'uma hora',\n\t hh : '%d horas',\n\t d : 'um dia',\n\t dd : '%d dias',\n\t M : 'um mês',\n\t MM : '%d meses',\n\t y : 'um ano',\n\t yy : '%d anos'\n\t },\n\t ordinalParse: /\\d{1,2}º/,\n\t ordinal : '%dº',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return pt;\n\t\n\t}));\n\n/***/ },\n/* 159 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Romanian [ro]\n\t//! author : Vlad Gurdiga : https://github.com/gurdiga\n\t//! author : Valentin Agachi : https://github.com/avaly\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t var format = {\n\t 'mm': 'minute',\n\t 'hh': 'ore',\n\t 'dd': 'zile',\n\t 'MM': 'luni',\n\t 'yy': 'ani'\n\t },\n\t separator = ' ';\n\t if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n\t separator = ' de ';\n\t }\n\t return number + separator + format[key];\n\t }\n\t\n\t var ro = moment.defineLocale('ro', {\n\t months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n\t monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n\t monthsParseExact: true,\n\t weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n\t weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n\t weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n\t longDateFormat : {\n\t LT : 'H:mm',\n\t LTS : 'H:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY H:mm',\n\t LLLL : 'dddd, D MMMM YYYY H:mm'\n\t },\n\t calendar : {\n\t sameDay: '[azi la] LT',\n\t nextDay: '[mâine la] LT',\n\t nextWeek: 'dddd [la] LT',\n\t lastDay: '[ieri la] LT',\n\t lastWeek: '[fosta] dddd [la] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'peste %s',\n\t past : '%s în urmă',\n\t s : 'câteva secunde',\n\t m : 'un minut',\n\t mm : relativeTimeWithPlural,\n\t h : 'o oră',\n\t hh : relativeTimeWithPlural,\n\t d : 'o zi',\n\t dd : relativeTimeWithPlural,\n\t M : 'o lună',\n\t MM : relativeTimeWithPlural,\n\t y : 'un an',\n\t yy : relativeTimeWithPlural\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return ro;\n\t\n\t}));\n\n/***/ },\n/* 160 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Russian [ru]\n\t//! author : Viktorminator : https://github.com/Viktorminator\n\t//! Author : Menelion Elensúle : https://github.com/Oire\n\t//! author : Коренберг Марк : https://github.com/socketpair\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t function plural(word, num) {\n\t var forms = word.split('_');\n\t return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n\t }\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t var format = {\n\t 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n\t 'hh': 'час_часа_часов',\n\t 'dd': 'день_дня_дней',\n\t 'MM': 'месяц_месяца_месяцев',\n\t 'yy': 'год_года_лет'\n\t };\n\t if (key === 'm') {\n\t return withoutSuffix ? 'минута' : 'минуту';\n\t }\n\t else {\n\t return number + ' ' + plural(format[key], +number);\n\t }\n\t }\n\t var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\t\n\t // http://new.gramota.ru/spravka/rules/139-prop : § 103\n\t // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n\t // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n\t var ru = moment.defineLocale('ru', {\n\t months : {\n\t format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n\t standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n\t },\n\t monthsShort : {\n\t // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n\t format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n\t standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n\t },\n\t weekdays : {\n\t standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n\t format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n\t isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n\t },\n\t weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n\t weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n\t monthsParse : monthsParse,\n\t longMonthsParse : monthsParse,\n\t shortMonthsParse : monthsParse,\n\t\n\t // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n\t monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\t\n\t // копия предыдущего\n\t monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\t\n\t // полные названия с падежами\n\t monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\t\n\t // Выражение, которое соотвествует только сокращённым формам\n\t monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D MMMM YYYY г.',\n\t LLL : 'D MMMM YYYY г., HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[Сегодня в] LT',\n\t nextDay: '[Завтра в] LT',\n\t lastDay: '[Вчера в] LT',\n\t nextWeek: function (now) {\n\t if (now.week() !== this.week()) {\n\t switch (this.day()) {\n\t case 0:\n\t return '[В следующее] dddd [в] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t return '[В следующий] dddd [в] LT';\n\t case 3:\n\t case 5:\n\t case 6:\n\t return '[В следующую] dddd [в] LT';\n\t }\n\t } else {\n\t if (this.day() === 2) {\n\t return '[Во] dddd [в] LT';\n\t } else {\n\t return '[В] dddd [в] LT';\n\t }\n\t }\n\t },\n\t lastWeek: function (now) {\n\t if (now.week() !== this.week()) {\n\t switch (this.day()) {\n\t case 0:\n\t return '[В прошлое] dddd [в] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t return '[В прошлый] dddd [в] LT';\n\t case 3:\n\t case 5:\n\t case 6:\n\t return '[В прошлую] dddd [в] LT';\n\t }\n\t } else {\n\t if (this.day() === 2) {\n\t return '[Во] dddd [в] LT';\n\t } else {\n\t return '[В] dddd [в] LT';\n\t }\n\t }\n\t },\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'через %s',\n\t past : '%s назад',\n\t s : 'несколько секунд',\n\t m : relativeTimeWithPlural,\n\t mm : relativeTimeWithPlural,\n\t h : 'час',\n\t hh : relativeTimeWithPlural,\n\t d : 'день',\n\t dd : relativeTimeWithPlural,\n\t M : 'месяц',\n\t MM : relativeTimeWithPlural,\n\t y : 'год',\n\t yy : relativeTimeWithPlural\n\t },\n\t meridiemParse: /ночи|утра|дня|вечера/i,\n\t isPM : function (input) {\n\t return /^(дня|вечера)$/.test(input);\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ночи';\n\t } else if (hour < 12) {\n\t return 'утра';\n\t } else if (hour < 17) {\n\t return 'дня';\n\t } else {\n\t return 'вечера';\n\t }\n\t },\n\t ordinalParse: /\\d{1,2}-(й|го|я)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'M':\n\t case 'd':\n\t case 'DDD':\n\t return number + '-й';\n\t case 'D':\n\t return number + '-го';\n\t case 'w':\n\t case 'W':\n\t return number + '-я';\n\t default:\n\t return number;\n\t }\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return ru;\n\t\n\t}));\n\n/***/ },\n/* 161 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Northern Sami [se]\n\t//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t\n\t var se = moment.defineLocale('se', {\n\t months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n\t monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n\t weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n\t weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n\t weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'MMMM D. [b.] YYYY',\n\t LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n\t LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[otne ti] LT',\n\t nextDay: '[ihttin ti] LT',\n\t nextWeek: 'dddd [ti] LT',\n\t lastDay: '[ikte ti] LT',\n\t lastWeek: '[ovddit] dddd [ti] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : '%s geažes',\n\t past : 'maŋit %s',\n\t s : 'moadde sekunddat',\n\t m : 'okta minuhta',\n\t mm : '%d minuhtat',\n\t h : 'okta diimmu',\n\t hh : '%d diimmut',\n\t d : 'okta beaivi',\n\t dd : '%d beaivvit',\n\t M : 'okta mánnu',\n\t MM : '%d mánut',\n\t y : 'okta jahki',\n\t yy : '%d jagit'\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return se;\n\t\n\t}));\n\n/***/ },\n/* 162 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Sinhalese [si]\n\t//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t /*jshint -W100*/\n\t var si = moment.defineLocale('si', {\n\t months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n\t monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n\t weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n\t weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n\t weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'a h:mm',\n\t LTS : 'a h:mm:ss',\n\t L : 'YYYY/MM/DD',\n\t LL : 'YYYY MMMM D',\n\t LLL : 'YYYY MMMM D, a h:mm',\n\t LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n\t },\n\t calendar : {\n\t sameDay : '[අද] LT[ට]',\n\t nextDay : '[හෙට] LT[ට]',\n\t nextWeek : 'dddd LT[ට]',\n\t lastDay : '[ඊයේ] LT[ට]',\n\t lastWeek : '[පසුගිය] dddd LT[ට]',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%sකින්',\n\t past : '%sකට පෙර',\n\t s : 'තත්පර කිහිපය',\n\t m : 'මිනිත්තුව',\n\t mm : 'මිනිත්තු %d',\n\t h : 'පැය',\n\t hh : 'පැය %d',\n\t d : 'දිනය',\n\t dd : 'දින %d',\n\t M : 'මාසය',\n\t MM : 'මාස %d',\n\t y : 'වසර',\n\t yy : 'වසර %d'\n\t },\n\t ordinalParse: /\\d{1,2} වැනි/,\n\t ordinal : function (number) {\n\t return number + ' වැනි';\n\t },\n\t meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n\t isPM : function (input) {\n\t return input === 'ප.ව.' || input === 'පස් වරු';\n\t },\n\t meridiem : function (hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? 'ප.ව.' : 'පස් වරු';\n\t } else {\n\t return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n\t }\n\t }\n\t });\n\t\n\t return si;\n\t\n\t}));\n\n/***/ },\n/* 163 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Slovak [sk]\n\t//! author : Martin Minka : https://github.com/k2s\n\t//! based on work of petrbela : https://github.com/petrbela\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n\t monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n\t function plural(n) {\n\t return (n > 1) && (n < 5);\n\t }\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 's': // a few seconds / in a few seconds / a few seconds ago\n\t return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n\t case 'm': // a minute / in a minute / a minute ago\n\t return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n\t case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'minúty' : 'minút');\n\t } else {\n\t return result + 'minútami';\n\t }\n\t break;\n\t case 'h': // an hour / in an hour / an hour ago\n\t return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n\t case 'hh': // 9 hours / in 9 hours / 9 hours ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'hodiny' : 'hodín');\n\t } else {\n\t return result + 'hodinami';\n\t }\n\t break;\n\t case 'd': // a day / in a day / a day ago\n\t return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n\t case 'dd': // 9 days / in 9 days / 9 days ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'dni' : 'dní');\n\t } else {\n\t return result + 'dňami';\n\t }\n\t break;\n\t case 'M': // a month / in a month / a month ago\n\t return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n\t case 'MM': // 9 months / in 9 months / 9 months ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'mesiace' : 'mesiacov');\n\t } else {\n\t return result + 'mesiacmi';\n\t }\n\t break;\n\t case 'y': // a year / in a year / a year ago\n\t return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n\t case 'yy': // 9 years / in 9 years / 9 years ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'roky' : 'rokov');\n\t } else {\n\t return result + 'rokmi';\n\t }\n\t break;\n\t }\n\t }\n\t\n\t var sk = moment.defineLocale('sk', {\n\t months : months,\n\t monthsShort : monthsShort,\n\t weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n\t weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n\t weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n\t longDateFormat : {\n\t LT: 'H:mm',\n\t LTS : 'H:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D. MMMM YYYY',\n\t LLL : 'D. MMMM YYYY H:mm',\n\t LLLL : 'dddd D. MMMM YYYY H:mm'\n\t },\n\t calendar : {\n\t sameDay: '[dnes o] LT',\n\t nextDay: '[zajtra o] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[v nedeľu o] LT';\n\t case 1:\n\t case 2:\n\t return '[v] dddd [o] LT';\n\t case 3:\n\t return '[v stredu o] LT';\n\t case 4:\n\t return '[vo štvrtok o] LT';\n\t case 5:\n\t return '[v piatok o] LT';\n\t case 6:\n\t return '[v sobotu o] LT';\n\t }\n\t },\n\t lastDay: '[včera o] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[minulú nedeľu o] LT';\n\t case 1:\n\t case 2:\n\t return '[minulý] dddd [o] LT';\n\t case 3:\n\t return '[minulú stredu o] LT';\n\t case 4:\n\t case 5:\n\t return '[minulý] dddd [o] LT';\n\t case 6:\n\t return '[minulú sobotu o] LT';\n\t }\n\t },\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'za %s',\n\t past : 'pred %s',\n\t s : translate,\n\t m : translate,\n\t mm : translate,\n\t h : translate,\n\t hh : translate,\n\t d : translate,\n\t dd : translate,\n\t M : translate,\n\t MM : translate,\n\t y : translate,\n\t yy : translate\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return sk;\n\t\n\t}));\n\n/***/ },\n/* 164 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Slovenian [sl]\n\t//! author : Robert Sedovšek : https://github.com/sedovsek\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 's':\n\t return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n\t case 'm':\n\t return withoutSuffix ? 'ena minuta' : 'eno minuto';\n\t case 'mm':\n\t if (number === 1) {\n\t result += withoutSuffix ? 'minuta' : 'minuto';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n\t }\n\t return result;\n\t case 'h':\n\t return withoutSuffix ? 'ena ura' : 'eno uro';\n\t case 'hh':\n\t if (number === 1) {\n\t result += withoutSuffix ? 'ura' : 'uro';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'uri' : 'urama';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'ure' : 'urami';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'ur' : 'urami';\n\t }\n\t return result;\n\t case 'd':\n\t return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n\t case 'dd':\n\t if (number === 1) {\n\t result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n\t }\n\t return result;\n\t case 'M':\n\t return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n\t case 'MM':\n\t if (number === 1) {\n\t result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n\t }\n\t return result;\n\t case 'y':\n\t return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n\t case 'yy':\n\t if (number === 1) {\n\t result += withoutSuffix || isFuture ? 'leto' : 'letom';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'leta' : 'leti';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'let' : 'leti';\n\t }\n\t return result;\n\t }\n\t }\n\t\n\t var sl = moment.defineLocale('sl', {\n\t months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n\t monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n\t monthsParseExact: true,\n\t weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n\t weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n\t weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'H:mm',\n\t LTS : 'H:mm:ss',\n\t L : 'DD. MM. YYYY',\n\t LL : 'D. MMMM YYYY',\n\t LLL : 'D. MMMM YYYY H:mm',\n\t LLLL : 'dddd, D. MMMM YYYY H:mm'\n\t },\n\t calendar : {\n\t sameDay : '[danes ob] LT',\n\t nextDay : '[jutri ob] LT',\n\t\n\t nextWeek : function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[v] [nedeljo] [ob] LT';\n\t case 3:\n\t return '[v] [sredo] [ob] LT';\n\t case 6:\n\t return '[v] [soboto] [ob] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[v] dddd [ob] LT';\n\t }\n\t },\n\t lastDay : '[včeraj ob] LT',\n\t lastWeek : function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[prejšnjo] [nedeljo] [ob] LT';\n\t case 3:\n\t return '[prejšnjo] [sredo] [ob] LT';\n\t case 6:\n\t return '[prejšnjo] [soboto] [ob] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[prejšnji] dddd [ob] LT';\n\t }\n\t },\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'čez %s',\n\t past : 'pred %s',\n\t s : processRelativeTime,\n\t m : processRelativeTime,\n\t mm : processRelativeTime,\n\t h : processRelativeTime,\n\t hh : processRelativeTime,\n\t d : processRelativeTime,\n\t dd : processRelativeTime,\n\t M : processRelativeTime,\n\t MM : processRelativeTime,\n\t y : processRelativeTime,\n\t yy : processRelativeTime\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return sl;\n\t\n\t}));\n\n/***/ },\n/* 165 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Albanian [sq]\n\t//! author : Flakërim Ismani : https://github.com/flakerimi\n\t//! author: Menelion Elensúle: https://github.com/Oire (tests)\n\t//! author : Oerd Cukalla : https://github.com/oerd (fixes)\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var sq = moment.defineLocale('sq', {\n\t months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n\t monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n\t weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n\t weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n\t weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n\t weekdaysParseExact : true,\n\t meridiemParse: /PD|MD/,\n\t isPM: function (input) {\n\t return input.charAt(0) === 'M';\n\t },\n\t meridiem : function (hours, minutes, isLower) {\n\t return hours < 12 ? 'PD' : 'MD';\n\t },\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay : '[Sot në] LT',\n\t nextDay : '[Nesër në] LT',\n\t nextWeek : 'dddd [në] LT',\n\t lastDay : '[Dje në] LT',\n\t lastWeek : 'dddd [e kaluar në] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'në %s',\n\t past : '%s më parë',\n\t s : 'disa sekonda',\n\t m : 'një minutë',\n\t mm : '%d minuta',\n\t h : 'një orë',\n\t hh : '%d orë',\n\t d : 'një ditë',\n\t dd : '%d ditë',\n\t M : 'një muaj',\n\t MM : '%d muaj',\n\t y : 'një vit',\n\t yy : '%d vite'\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return sq;\n\t\n\t}));\n\n/***/ },\n/* 166 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Serbian Cyrillic [sr-cyrl]\n\t//! author : Milan Janačković : https://github.com/milan-j\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var translator = {\n\t words: { //Different grammatical cases\n\t m: ['један минут', 'једне минуте'],\n\t mm: ['минут', 'минуте', 'минута'],\n\t h: ['један сат', 'једног сата'],\n\t hh: ['сат', 'сата', 'сати'],\n\t dd: ['дан', 'дана', 'дана'],\n\t MM: ['месец', 'месеца', 'месеци'],\n\t yy: ['година', 'године', 'година']\n\t },\n\t correctGrammaticalCase: function (number, wordKey) {\n\t return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n\t },\n\t translate: function (number, withoutSuffix, key) {\n\t var wordKey = translator.words[key];\n\t if (key.length === 1) {\n\t return withoutSuffix ? wordKey[0] : wordKey[1];\n\t } else {\n\t return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n\t }\n\t }\n\t };\n\t\n\t var sr_cyrl = moment.defineLocale('sr-cyrl', {\n\t months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n\t monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n\t monthsParseExact: true,\n\t weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n\t weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n\t weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS : 'H:mm:ss',\n\t L: 'DD. MM. YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm'\n\t },\n\t calendar: {\n\t sameDay: '[данас у] LT',\n\t nextDay: '[сутра у] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[у] [недељу] [у] LT';\n\t case 3:\n\t return '[у] [среду] [у] LT';\n\t case 6:\n\t return '[у] [суботу] [у] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[у] dddd [у] LT';\n\t }\n\t },\n\t lastDay : '[јуче у] LT',\n\t lastWeek : function () {\n\t var lastWeekDays = [\n\t '[прошле] [недеље] [у] LT',\n\t '[прошлог] [понедељка] [у] LT',\n\t '[прошлог] [уторка] [у] LT',\n\t '[прошле] [среде] [у] LT',\n\t '[прошлог] [четвртка] [у] LT',\n\t '[прошлог] [петка] [у] LT',\n\t '[прошле] [суботе] [у] LT'\n\t ];\n\t return lastWeekDays[this.day()];\n\t },\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'за %s',\n\t past : 'пре %s',\n\t s : 'неколико секунди',\n\t m : translator.translate,\n\t mm : translator.translate,\n\t h : translator.translate,\n\t hh : translator.translate,\n\t d : 'дан',\n\t dd : translator.translate,\n\t M : 'месец',\n\t MM : translator.translate,\n\t y : 'годину',\n\t yy : translator.translate\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return sr_cyrl;\n\t\n\t}));\n\n/***/ },\n/* 167 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Serbian [sr]\n\t//! author : Milan Janačković : https://github.com/milan-j\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var translator = {\n\t words: { //Different grammatical cases\n\t m: ['jedan minut', 'jedne minute'],\n\t mm: ['minut', 'minute', 'minuta'],\n\t h: ['jedan sat', 'jednog sata'],\n\t hh: ['sat', 'sata', 'sati'],\n\t dd: ['dan', 'dana', 'dana'],\n\t MM: ['mesec', 'meseca', 'meseci'],\n\t yy: ['godina', 'godine', 'godina']\n\t },\n\t correctGrammaticalCase: function (number, wordKey) {\n\t return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n\t },\n\t translate: function (number, withoutSuffix, key) {\n\t var wordKey = translator.words[key];\n\t if (key.length === 1) {\n\t return withoutSuffix ? wordKey[0] : wordKey[1];\n\t } else {\n\t return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n\t }\n\t }\n\t };\n\t\n\t var sr = moment.defineLocale('sr', {\n\t months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n\t monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n\t monthsParseExact: true,\n\t weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n\t weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n\t weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS : 'H:mm:ss',\n\t L: 'DD. MM. YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm'\n\t },\n\t calendar: {\n\t sameDay: '[danas u] LT',\n\t nextDay: '[sutra u] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[u] [nedelju] [u] LT';\n\t case 3:\n\t return '[u] [sredu] [u] LT';\n\t case 6:\n\t return '[u] [subotu] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[u] dddd [u] LT';\n\t }\n\t },\n\t lastDay : '[juče u] LT',\n\t lastWeek : function () {\n\t var lastWeekDays = [\n\t '[prošle] [nedelje] [u] LT',\n\t '[prošlog] [ponedeljka] [u] LT',\n\t '[prošlog] [utorka] [u] LT',\n\t '[prošle] [srede] [u] LT',\n\t '[prošlog] [četvrtka] [u] LT',\n\t '[prošlog] [petka] [u] LT',\n\t '[prošle] [subote] [u] LT'\n\t ];\n\t return lastWeekDays[this.day()];\n\t },\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'za %s',\n\t past : 'pre %s',\n\t s : 'nekoliko sekundi',\n\t m : translator.translate,\n\t mm : translator.translate,\n\t h : translator.translate,\n\t hh : translator.translate,\n\t d : 'dan',\n\t dd : translator.translate,\n\t M : 'mesec',\n\t MM : translator.translate,\n\t y : 'godinu',\n\t yy : translator.translate\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return sr;\n\t\n\t}));\n\n/***/ },\n/* 168 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Swazi [ss]\n\t//! author : Nicolai Davies : https://github.com/nicolaidavies\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t\n\t var ss = moment.defineLocale('ss', {\n\t months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n\t monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n\t weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n\t weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n\t weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'h:mm A',\n\t LTS : 'h:mm:ss A',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY h:mm A',\n\t LLLL : 'dddd, D MMMM YYYY h:mm A'\n\t },\n\t calendar : {\n\t sameDay : '[Namuhla nga] LT',\n\t nextDay : '[Kusasa nga] LT',\n\t nextWeek : 'dddd [nga] LT',\n\t lastDay : '[Itolo nga] LT',\n\t lastWeek : 'dddd [leliphelile] [nga] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'nga %s',\n\t past : 'wenteka nga %s',\n\t s : 'emizuzwana lomcane',\n\t m : 'umzuzu',\n\t mm : '%d emizuzu',\n\t h : 'lihora',\n\t hh : '%d emahora',\n\t d : 'lilanga',\n\t dd : '%d emalanga',\n\t M : 'inyanga',\n\t MM : '%d tinyanga',\n\t y : 'umnyaka',\n\t yy : '%d iminyaka'\n\t },\n\t meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n\t meridiem : function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'ekuseni';\n\t } else if (hours < 15) {\n\t return 'emini';\n\t } else if (hours < 19) {\n\t return 'entsambama';\n\t } else {\n\t return 'ebusuku';\n\t }\n\t },\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'ekuseni') {\n\t return hour;\n\t } else if (meridiem === 'emini') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n\t if (hour === 0) {\n\t return 0;\n\t }\n\t return hour + 12;\n\t }\n\t },\n\t ordinalParse: /\\d{1,2}/,\n\t ordinal : '%d',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return ss;\n\t\n\t}));\n\n/***/ },\n/* 169 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Swedish [sv]\n\t//! author : Jens Alm : https://github.com/ulmus\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var sv = moment.defineLocale('sv', {\n\t months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n\t monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n\t weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n\t weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n\t weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'YYYY-MM-DD',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY [kl.] HH:mm',\n\t LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n\t lll : 'D MMM YYYY HH:mm',\n\t llll : 'ddd D MMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[Idag] LT',\n\t nextDay: '[Imorgon] LT',\n\t lastDay: '[Igår] LT',\n\t nextWeek: '[På] dddd LT',\n\t lastWeek: '[I] dddd[s] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'om %s',\n\t past : 'för %s sedan',\n\t s : 'några sekunder',\n\t m : 'en minut',\n\t mm : '%d minuter',\n\t h : 'en timme',\n\t hh : '%d timmar',\n\t d : 'en dag',\n\t dd : '%d dagar',\n\t M : 'en månad',\n\t MM : '%d månader',\n\t y : 'ett år',\n\t yy : '%d år'\n\t },\n\t ordinalParse: /\\d{1,2}(e|a)/,\n\t ordinal : function (number) {\n\t var b = number % 10,\n\t output = (~~(number % 100 / 10) === 1) ? 'e' :\n\t (b === 1) ? 'a' :\n\t (b === 2) ? 'a' :\n\t (b === 3) ? 'e' : 'e';\n\t return number + output;\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return sv;\n\t\n\t}));\n\n/***/ },\n/* 170 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Swahili [sw]\n\t//! author : Fahad Kassim : https://github.com/fadsel\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var sw = moment.defineLocale('sw', {\n\t months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n\t monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n\t weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n\t weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n\t weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay : '[leo saa] LT',\n\t nextDay : '[kesho saa] LT',\n\t nextWeek : '[wiki ijayo] dddd [saat] LT',\n\t lastDay : '[jana] LT',\n\t lastWeek : '[wiki iliyopita] dddd [saat] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%s baadaye',\n\t past : 'tokea %s',\n\t s : 'hivi punde',\n\t m : 'dakika moja',\n\t mm : 'dakika %d',\n\t h : 'saa limoja',\n\t hh : 'masaa %d',\n\t d : 'siku moja',\n\t dd : 'masiku %d',\n\t M : 'mwezi mmoja',\n\t MM : 'miezi %d',\n\t y : 'mwaka mmoja',\n\t yy : 'miaka %d'\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return sw;\n\t\n\t}));\n\n/***/ },\n/* 171 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Tamil [ta]\n\t//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var symbolMap = {\n\t '1': '௧',\n\t '2': '௨',\n\t '3': '௩',\n\t '4': '௪',\n\t '5': '௫',\n\t '6': '௬',\n\t '7': '௭',\n\t '8': '௮',\n\t '9': '௯',\n\t '0': '௦'\n\t }, numberMap = {\n\t '௧': '1',\n\t '௨': '2',\n\t '௩': '3',\n\t '௪': '4',\n\t '௫': '5',\n\t '௬': '6',\n\t '௭': '7',\n\t '௮': '8',\n\t '௯': '9',\n\t '௦': '0'\n\t };\n\t\n\t var ta = moment.defineLocale('ta', {\n\t months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n\t monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n\t weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n\t weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n\t weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY, HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY, HH:mm'\n\t },\n\t calendar : {\n\t sameDay : '[இன்று] LT',\n\t nextDay : '[நாளை] LT',\n\t nextWeek : 'dddd, LT',\n\t lastDay : '[நேற்று] LT',\n\t lastWeek : '[கடந்த வாரம்] dddd, LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%s இல்',\n\t past : '%s முன்',\n\t s : 'ஒரு சில விநாடிகள்',\n\t m : 'ஒரு நிமிடம்',\n\t mm : '%d நிமிடங்கள்',\n\t h : 'ஒரு மணி நேரம்',\n\t hh : '%d மணி நேரம்',\n\t d : 'ஒரு நாள்',\n\t dd : '%d நாட்கள்',\n\t M : 'ஒரு மாதம்',\n\t MM : '%d மாதங்கள்',\n\t y : 'ஒரு வருடம்',\n\t yy : '%d ஆண்டுகள்'\n\t },\n\t ordinalParse: /\\d{1,2}வது/,\n\t ordinal : function (number) {\n\t return number + 'வது';\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t // refer http://ta.wikipedia.org/s/1er1\n\t meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 2) {\n\t return ' யாமம்';\n\t } else if (hour < 6) {\n\t return ' வைகறை'; // வைகறை\n\t } else if (hour < 10) {\n\t return ' காலை'; // காலை\n\t } else if (hour < 14) {\n\t return ' நண்பகல்'; // நண்பகல்\n\t } else if (hour < 18) {\n\t return ' எற்பாடு'; // எற்பாடு\n\t } else if (hour < 22) {\n\t return ' மாலை'; // மாலை\n\t } else {\n\t return ' யாமம்';\n\t }\n\t },\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'யாமம்') {\n\t return hour < 2 ? hour : hour + 12;\n\t } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n\t return hour;\n\t } else if (meridiem === 'நண்பகல்') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else {\n\t return hour + 12;\n\t }\n\t },\n\t week : {\n\t dow : 0, // Sunday is the first day of the week.\n\t doy : 6 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return ta;\n\t\n\t}));\n\n/***/ },\n/* 172 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Telugu [te]\n\t//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var te = moment.defineLocale('te', {\n\t months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n\t monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n\t weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n\t weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n\t longDateFormat : {\n\t LT : 'A h:mm',\n\t LTS : 'A h:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY, A h:mm',\n\t LLLL : 'dddd, D MMMM YYYY, A h:mm'\n\t },\n\t calendar : {\n\t sameDay : '[నేడు] LT',\n\t nextDay : '[రేపు] LT',\n\t nextWeek : 'dddd, LT',\n\t lastDay : '[నిన్న] LT',\n\t lastWeek : '[గత] dddd, LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%s లో',\n\t past : '%s క్రితం',\n\t s : 'కొన్ని క్షణాలు',\n\t m : 'ఒక నిమిషం',\n\t mm : '%d నిమిషాలు',\n\t h : 'ఒక గంట',\n\t hh : '%d గంటలు',\n\t d : 'ఒక రోజు',\n\t dd : '%d రోజులు',\n\t M : 'ఒక నెల',\n\t MM : '%d నెలలు',\n\t y : 'ఒక సంవత్సరం',\n\t yy : '%d సంవత్సరాలు'\n\t },\n\t ordinalParse : /\\d{1,2}వ/,\n\t ordinal : '%dవ',\n\t meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'రాత్రి') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'ఉదయం') {\n\t return hour;\n\t } else if (meridiem === 'మధ్యాహ్నం') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'సాయంత్రం') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'రాత్రి';\n\t } else if (hour < 10) {\n\t return 'ఉదయం';\n\t } else if (hour < 17) {\n\t return 'మధ్యాహ్నం';\n\t } else if (hour < 20) {\n\t return 'సాయంత్రం';\n\t } else {\n\t return 'రాత్రి';\n\t }\n\t },\n\t week : {\n\t dow : 0, // Sunday is the first day of the week.\n\t doy : 6 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return te;\n\t\n\t}));\n\n/***/ },\n/* 173 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Thai [th]\n\t//! author : Kridsada Thanabulpong : https://github.com/sirn\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var th = moment.defineLocale('th', {\n\t months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n\t monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n\t monthsParseExact: true,\n\t weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n\t weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n\t weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'H นาฬิกา m นาที',\n\t LTS : 'H นาฬิกา m นาที s วินาที',\n\t L : 'YYYY/MM/DD',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที',\n\t LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที'\n\t },\n\t meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n\t isPM: function (input) {\n\t return input === 'หลังเที่ยง';\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ก่อนเที่ยง';\n\t } else {\n\t return 'หลังเที่ยง';\n\t }\n\t },\n\t calendar : {\n\t sameDay : '[วันนี้ เวลา] LT',\n\t nextDay : '[พรุ่งนี้ เวลา] LT',\n\t nextWeek : 'dddd[หน้า เวลา] LT',\n\t lastDay : '[เมื่อวานนี้ เวลา] LT',\n\t lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'อีก %s',\n\t past : '%sที่แล้ว',\n\t s : 'ไม่กี่วินาที',\n\t m : '1 นาที',\n\t mm : '%d นาที',\n\t h : '1 ชั่วโมง',\n\t hh : '%d ชั่วโมง',\n\t d : '1 วัน',\n\t dd : '%d วัน',\n\t M : '1 เดือน',\n\t MM : '%d เดือน',\n\t y : '1 ปี',\n\t yy : '%d ปี'\n\t }\n\t });\n\t\n\t return th;\n\t\n\t}));\n\n/***/ },\n/* 174 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Tagalog (Philippines) [tl-ph]\n\t//! author : Dan Hagman\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var tl_ph = moment.defineLocale('tl-ph', {\n\t months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n\t monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n\t weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n\t weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n\t weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'MM/D/YYYY',\n\t LL : 'MMMM D, YYYY',\n\t LLL : 'MMMM D, YYYY HH:mm',\n\t LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[Ngayon sa] LT',\n\t nextDay: '[Bukas sa] LT',\n\t nextWeek: 'dddd [sa] LT',\n\t lastDay: '[Kahapon sa] LT',\n\t lastWeek: 'dddd [huling linggo] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'sa loob ng %s',\n\t past : '%s ang nakalipas',\n\t s : 'ilang segundo',\n\t m : 'isang minuto',\n\t mm : '%d minuto',\n\t h : 'isang oras',\n\t hh : '%d oras',\n\t d : 'isang araw',\n\t dd : '%d araw',\n\t M : 'isang buwan',\n\t MM : '%d buwan',\n\t y : 'isang taon',\n\t yy : '%d taon'\n\t },\n\t ordinalParse: /\\d{1,2}/,\n\t ordinal : function (number) {\n\t return number;\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return tl_ph;\n\t\n\t}));\n\n/***/ },\n/* 175 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Klingon [tlh]\n\t//! author : Dominika Kruk : https://github.com/amaranthrose\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\t\n\t function translateFuture(output) {\n\t var time = output;\n\t time = (output.indexOf('jaj') !== -1) ?\n\t time.slice(0, -3) + 'leS' :\n\t (output.indexOf('jar') !== -1) ?\n\t time.slice(0, -3) + 'waQ' :\n\t (output.indexOf('DIS') !== -1) ?\n\t time.slice(0, -3) + 'nem' :\n\t time + ' pIq';\n\t return time;\n\t }\n\t\n\t function translatePast(output) {\n\t var time = output;\n\t time = (output.indexOf('jaj') !== -1) ?\n\t time.slice(0, -3) + 'Hu’' :\n\t (output.indexOf('jar') !== -1) ?\n\t time.slice(0, -3) + 'wen' :\n\t (output.indexOf('DIS') !== -1) ?\n\t time.slice(0, -3) + 'ben' :\n\t time + ' ret';\n\t return time;\n\t }\n\t\n\t function translate(number, withoutSuffix, string, isFuture) {\n\t var numberNoun = numberAsNoun(number);\n\t switch (string) {\n\t case 'mm':\n\t return numberNoun + ' tup';\n\t case 'hh':\n\t return numberNoun + ' rep';\n\t case 'dd':\n\t return numberNoun + ' jaj';\n\t case 'MM':\n\t return numberNoun + ' jar';\n\t case 'yy':\n\t return numberNoun + ' DIS';\n\t }\n\t }\n\t\n\t function numberAsNoun(number) {\n\t var hundred = Math.floor((number % 1000) / 100),\n\t ten = Math.floor((number % 100) / 10),\n\t one = number % 10,\n\t word = '';\n\t if (hundred > 0) {\n\t word += numbersNouns[hundred] + 'vatlh';\n\t }\n\t if (ten > 0) {\n\t word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n\t }\n\t if (one > 0) {\n\t word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n\t }\n\t return (word === '') ? 'pagh' : word;\n\t }\n\t\n\t var tlh = moment.defineLocale('tlh', {\n\t months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n\t monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n\t weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n\t weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[DaHjaj] LT',\n\t nextDay: '[wa’leS] LT',\n\t nextWeek: 'LLL',\n\t lastDay: '[wa’Hu’] LT',\n\t lastWeek: 'LLL',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : translateFuture,\n\t past : translatePast,\n\t s : 'puS lup',\n\t m : 'wa’ tup',\n\t mm : translate,\n\t h : 'wa’ rep',\n\t hh : translate,\n\t d : 'wa’ jaj',\n\t dd : translate,\n\t M : 'wa’ jar',\n\t MM : translate,\n\t y : 'wa’ DIS',\n\t yy : translate\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return tlh;\n\t\n\t}));\n\n/***/ },\n/* 176 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Turkish [tr]\n\t//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n\t//! Burak Yiğit Kaya: https://github.com/BYK\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var suffixes = {\n\t 1: '\\'inci',\n\t 5: '\\'inci',\n\t 8: '\\'inci',\n\t 70: '\\'inci',\n\t 80: '\\'inci',\n\t 2: '\\'nci',\n\t 7: '\\'nci',\n\t 20: '\\'nci',\n\t 50: '\\'nci',\n\t 3: '\\'üncü',\n\t 4: '\\'üncü',\n\t 100: '\\'üncü',\n\t 6: '\\'ncı',\n\t 9: '\\'uncu',\n\t 10: '\\'uncu',\n\t 30: '\\'uncu',\n\t 60: '\\'ıncı',\n\t 90: '\\'ıncı'\n\t };\n\t\n\t var tr = moment.defineLocale('tr', {\n\t months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n\t monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n\t weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n\t weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n\t weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay : '[bugün saat] LT',\n\t nextDay : '[yarın saat] LT',\n\t nextWeek : '[haftaya] dddd [saat] LT',\n\t lastDay : '[dün] LT',\n\t lastWeek : '[geçen hafta] dddd [saat] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : '%s sonra',\n\t past : '%s önce',\n\t s : 'birkaç saniye',\n\t m : 'bir dakika',\n\t mm : '%d dakika',\n\t h : 'bir saat',\n\t hh : '%d saat',\n\t d : 'bir gün',\n\t dd : '%d gün',\n\t M : 'bir ay',\n\t MM : '%d ay',\n\t y : 'bir yıl',\n\t yy : '%d yıl'\n\t },\n\t ordinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n\t ordinal : function (number) {\n\t if (number === 0) { // special case for zero\n\t return number + '\\'ıncı';\n\t }\n\t var a = number % 10,\n\t b = number % 100 - a,\n\t c = number >= 100 ? 100 : null;\n\t return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return tr;\n\t\n\t}));\n\n/***/ },\n/* 177 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Talossan [tzl]\n\t//! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t\n\t // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n\t // This is currently too difficult (maybe even impossible) to add.\n\t var tzl = moment.defineLocale('tzl', {\n\t months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n\t monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n\t weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n\t weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n\t weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH.mm',\n\t LTS : 'HH.mm.ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D. MMMM [dallas] YYYY',\n\t LLL : 'D. MMMM [dallas] YYYY HH.mm',\n\t LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n\t },\n\t meridiemParse: /d\\'o|d\\'a/i,\n\t isPM : function (input) {\n\t return 'd\\'o' === input.toLowerCase();\n\t },\n\t meridiem : function (hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? 'd\\'o' : 'D\\'O';\n\t } else {\n\t return isLower ? 'd\\'a' : 'D\\'A';\n\t }\n\t },\n\t calendar : {\n\t sameDay : '[oxhi à] LT',\n\t nextDay : '[demà à] LT',\n\t nextWeek : 'dddd [à] LT',\n\t lastDay : '[ieiri à] LT',\n\t lastWeek : '[sür el] dddd [lasteu à] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'osprei %s',\n\t past : 'ja%s',\n\t s : processRelativeTime,\n\t m : processRelativeTime,\n\t mm : processRelativeTime,\n\t h : processRelativeTime,\n\t hh : processRelativeTime,\n\t d : processRelativeTime,\n\t dd : processRelativeTime,\n\t M : processRelativeTime,\n\t MM : processRelativeTime,\n\t y : processRelativeTime,\n\t yy : processRelativeTime\n\t },\n\t ordinalParse: /\\d{1,2}\\./,\n\t ordinal : '%d.',\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t 's': ['viensas secunds', '\\'iensas secunds'],\n\t 'm': ['\\'n míut', '\\'iens míut'],\n\t 'mm': [number + ' míuts', '' + number + ' míuts'],\n\t 'h': ['\\'n þora', '\\'iensa þora'],\n\t 'hh': [number + ' þoras', '' + number + ' þoras'],\n\t 'd': ['\\'n ziua', '\\'iensa ziua'],\n\t 'dd': [number + ' ziuas', '' + number + ' ziuas'],\n\t 'M': ['\\'n mes', '\\'iens mes'],\n\t 'MM': [number + ' mesen', '' + number + ' mesen'],\n\t 'y': ['\\'n ar', '\\'iens ar'],\n\t 'yy': [number + ' ars', '' + number + ' ars']\n\t };\n\t return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n\t }\n\t\n\t return tzl;\n\t\n\t}));\n\n/***/ },\n/* 178 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Central Atlas Tamazight Latin [tzm-latn]\n\t//! author : Abdel Said : https://github.com/abdelsaid\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var tzm_latn = moment.defineLocale('tzm-latn', {\n\t months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n\t monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n\t weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n\t weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n\t weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[asdkh g] LT',\n\t nextDay: '[aska g] LT',\n\t nextWeek: 'dddd [g] LT',\n\t lastDay: '[assant g] LT',\n\t lastWeek: 'dddd [g] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'dadkh s yan %s',\n\t past : 'yan %s',\n\t s : 'imik',\n\t m : 'minuḍ',\n\t mm : '%d minuḍ',\n\t h : 'saɛa',\n\t hh : '%d tassaɛin',\n\t d : 'ass',\n\t dd : '%d ossan',\n\t M : 'ayowr',\n\t MM : '%d iyyirn',\n\t y : 'asgas',\n\t yy : '%d isgasn'\n\t },\n\t week : {\n\t dow : 6, // Saturday is the first day of the week.\n\t doy : 12 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return tzm_latn;\n\t\n\t}));\n\n/***/ },\n/* 179 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Central Atlas Tamazight [tzm]\n\t//! author : Abdel Said : https://github.com/abdelsaid\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var tzm = moment.defineLocale('tzm', {\n\t months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n\t monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n\t weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n\t weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n\t weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n\t nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n\t nextWeek: 'dddd [ⴴ] LT',\n\t lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n\t lastWeek: 'dddd [ⴴ] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n\t past : 'ⵢⴰⵏ %s',\n\t s : 'ⵉⵎⵉⴽ',\n\t m : 'ⵎⵉⵏⵓⴺ',\n\t mm : '%d ⵎⵉⵏⵓⴺ',\n\t h : 'ⵙⴰⵄⴰ',\n\t hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n\t d : 'ⴰⵙⵙ',\n\t dd : '%d oⵙⵙⴰⵏ',\n\t M : 'ⴰⵢoⵓⵔ',\n\t MM : '%d ⵉⵢⵢⵉⵔⵏ',\n\t y : 'ⴰⵙⴳⴰⵙ',\n\t yy : '%d ⵉⵙⴳⴰⵙⵏ'\n\t },\n\t week : {\n\t dow : 6, // Saturday is the first day of the week.\n\t doy : 12 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return tzm;\n\t\n\t}));\n\n/***/ },\n/* 180 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Ukrainian [uk]\n\t//! author : zemlanin : https://github.com/zemlanin\n\t//! Author : Menelion Elensúle : https://github.com/Oire\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t function plural(word, num) {\n\t var forms = word.split('_');\n\t return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n\t }\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t var format = {\n\t 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n\t 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n\t 'dd': 'день_дні_днів',\n\t 'MM': 'місяць_місяці_місяців',\n\t 'yy': 'рік_роки_років'\n\t };\n\t if (key === 'm') {\n\t return withoutSuffix ? 'хвилина' : 'хвилину';\n\t }\n\t else if (key === 'h') {\n\t return withoutSuffix ? 'година' : 'годину';\n\t }\n\t else {\n\t return number + ' ' + plural(format[key], +number);\n\t }\n\t }\n\t function weekdaysCaseReplace(m, format) {\n\t var weekdays = {\n\t 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n\t 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n\t 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n\t },\n\t nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n\t 'accusative' :\n\t ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n\t 'genitive' :\n\t 'nominative');\n\t return weekdays[nounCase][m.day()];\n\t }\n\t function processHoursFunction(str) {\n\t return function () {\n\t return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n\t };\n\t }\n\t\n\t var uk = moment.defineLocale('uk', {\n\t months : {\n\t 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n\t 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n\t },\n\t monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n\t weekdays : weekdaysCaseReplace,\n\t weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n\t weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD.MM.YYYY',\n\t LL : 'D MMMM YYYY р.',\n\t LLL : 'D MMMM YYYY р., HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n\t },\n\t calendar : {\n\t sameDay: processHoursFunction('[Сьогодні '),\n\t nextDay: processHoursFunction('[Завтра '),\n\t lastDay: processHoursFunction('[Вчора '),\n\t nextWeek: processHoursFunction('[У] dddd ['),\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t case 3:\n\t case 5:\n\t case 6:\n\t return processHoursFunction('[Минулої] dddd [').call(this);\n\t case 1:\n\t case 2:\n\t case 4:\n\t return processHoursFunction('[Минулого] dddd [').call(this);\n\t }\n\t },\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : 'за %s',\n\t past : '%s тому',\n\t s : 'декілька секунд',\n\t m : relativeTimeWithPlural,\n\t mm : relativeTimeWithPlural,\n\t h : 'годину',\n\t hh : relativeTimeWithPlural,\n\t d : 'день',\n\t dd : relativeTimeWithPlural,\n\t M : 'місяць',\n\t MM : relativeTimeWithPlural,\n\t y : 'рік',\n\t yy : relativeTimeWithPlural\n\t },\n\t // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n\t meridiemParse: /ночі|ранку|дня|вечора/,\n\t isPM: function (input) {\n\t return /^(дня|вечора)$/.test(input);\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ночі';\n\t } else if (hour < 12) {\n\t return 'ранку';\n\t } else if (hour < 17) {\n\t return 'дня';\n\t } else {\n\t return 'вечора';\n\t }\n\t },\n\t ordinalParse: /\\d{1,2}-(й|го)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'M':\n\t case 'd':\n\t case 'DDD':\n\t case 'w':\n\t case 'W':\n\t return number + '-й';\n\t case 'D':\n\t return number + '-го';\n\t default:\n\t return number;\n\t }\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 1st is the first week of the year.\n\t }\n\t });\n\t\n\t return uk;\n\t\n\t}));\n\n/***/ },\n/* 181 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Uzbek [uz]\n\t//! author : Sardor Muminov : https://github.com/muminoff\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var uz = moment.defineLocale('uz', {\n\t months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n\t monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n\t weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n\t weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n\t weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'D MMMM YYYY, dddd HH:mm'\n\t },\n\t calendar : {\n\t sameDay : '[Бугун соат] LT [да]',\n\t nextDay : '[Эртага] LT [да]',\n\t nextWeek : 'dddd [куни соат] LT [да]',\n\t lastDay : '[Кеча соат] LT [да]',\n\t lastWeek : '[Утган] dddd [куни соат] LT [да]',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'Якин %s ичида',\n\t past : 'Бир неча %s олдин',\n\t s : 'фурсат',\n\t m : 'бир дакика',\n\t mm : '%d дакика',\n\t h : 'бир соат',\n\t hh : '%d соат',\n\t d : 'бир кун',\n\t dd : '%d кун',\n\t M : 'бир ой',\n\t MM : '%d ой',\n\t y : 'бир йил',\n\t yy : '%d йил'\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 7 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return uz;\n\t\n\t}));\n\n/***/ },\n/* 182 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Vietnamese [vi]\n\t//! author : Bang Nguyen : https://github.com/bangnk\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var vi = moment.defineLocale('vi', {\n\t months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n\t monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n\t weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n\t weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n\t weekdaysParseExact : true,\n\t meridiemParse: /sa|ch/i,\n\t isPM : function (input) {\n\t return /^ch$/i.test(input);\n\t },\n\t meridiem : function (hours, minutes, isLower) {\n\t if (hours < 12) {\n\t return isLower ? 'sa' : 'SA';\n\t } else {\n\t return isLower ? 'ch' : 'CH';\n\t }\n\t },\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t LTS : 'HH:mm:ss',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM [năm] YYYY',\n\t LLL : 'D MMMM [năm] YYYY HH:mm',\n\t LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n\t l : 'DD/M/YYYY',\n\t ll : 'D MMM YYYY',\n\t lll : 'D MMM YYYY HH:mm',\n\t llll : 'ddd, D MMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay: '[Hôm nay lúc] LT',\n\t nextDay: '[Ngày mai lúc] LT',\n\t nextWeek: 'dddd [tuần tới lúc] LT',\n\t lastDay: '[Hôm qua lúc] LT',\n\t lastWeek: 'dddd [tuần rồi lúc] LT',\n\t sameElse: 'L'\n\t },\n\t relativeTime : {\n\t future : '%s tới',\n\t past : '%s trước',\n\t s : 'vài giây',\n\t m : 'một phút',\n\t mm : '%d phút',\n\t h : 'một giờ',\n\t hh : '%d giờ',\n\t d : 'một ngày',\n\t dd : '%d ngày',\n\t M : 'một tháng',\n\t MM : '%d tháng',\n\t y : 'một năm',\n\t yy : '%d năm'\n\t },\n\t ordinalParse: /\\d{1,2}/,\n\t ordinal : function (number) {\n\t return number;\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return vi;\n\t\n\t}));\n\n/***/ },\n/* 183 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Pseudo [x-pseudo]\n\t//! author : Andrew Hood : https://github.com/andrewhood125\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var x_pseudo = moment.defineLocale('x-pseudo', {\n\t months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n\t monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n\t monthsParseExact : true,\n\t weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n\t weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n\t weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n\t weekdaysParseExact : true,\n\t longDateFormat : {\n\t LT : 'HH:mm',\n\t L : 'DD/MM/YYYY',\n\t LL : 'D MMMM YYYY',\n\t LLL : 'D MMMM YYYY HH:mm',\n\t LLLL : 'dddd, D MMMM YYYY HH:mm'\n\t },\n\t calendar : {\n\t sameDay : '[T~ódá~ý át] LT',\n\t nextDay : '[T~ómó~rró~w át] LT',\n\t nextWeek : 'dddd [át] LT',\n\t lastDay : '[Ý~ést~érdá~ý át] LT',\n\t lastWeek : '[L~ást] dddd [át] LT',\n\t sameElse : 'L'\n\t },\n\t relativeTime : {\n\t future : 'í~ñ %s',\n\t past : '%s á~gó',\n\t s : 'á ~féw ~sécó~ñds',\n\t m : 'á ~míñ~úté',\n\t mm : '%d m~íñú~tés',\n\t h : 'á~ñ hó~úr',\n\t hh : '%d h~óúrs',\n\t d : 'á ~dáý',\n\t dd : '%d d~áýs',\n\t M : 'á ~móñ~th',\n\t MM : '%d m~óñt~hs',\n\t y : 'á ~ýéár',\n\t yy : '%d ý~éárs'\n\t },\n\t ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n\t ordinal : function (number) {\n\t var b = number % 10,\n\t output = (~~(number % 100 / 10) === 1) ? 'th' :\n\t (b === 1) ? 'st' :\n\t (b === 2) ? 'nd' :\n\t (b === 3) ? 'rd' : 'th';\n\t return number + output;\n\t },\n\t week : {\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return x_pseudo;\n\t\n\t}));\n\n/***/ },\n/* 184 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Chinese (China) [zh-cn]\n\t//! author : suupic : https://github.com/suupic\n\t//! author : Zeno Zeng : https://github.com/zenozeng\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var zh_cn = moment.defineLocale('zh-cn', {\n\t months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n\t monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n\t weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n\t weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n\t weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n\t longDateFormat : {\n\t LT : 'Ah点mm分',\n\t LTS : 'Ah点m分s秒',\n\t L : 'YYYY-MM-DD',\n\t LL : 'YYYY年MMMD日',\n\t LLL : 'YYYY年MMMD日Ah点mm分',\n\t LLLL : 'YYYY年MMMD日ddddAh点mm分',\n\t l : 'YYYY-MM-DD',\n\t ll : 'YYYY年MMMD日',\n\t lll : 'YYYY年MMMD日Ah点mm分',\n\t llll : 'YYYY年MMMD日ddddAh点mm分'\n\t },\n\t meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === '凌晨' || meridiem === '早上' ||\n\t meridiem === '上午') {\n\t return hour;\n\t } else if (meridiem === '下午' || meridiem === '晚上') {\n\t return hour + 12;\n\t } else {\n\t // '中午'\n\t return hour >= 11 ? hour : hour + 12;\n\t }\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t var hm = hour * 100 + minute;\n\t if (hm < 600) {\n\t return '凌晨';\n\t } else if (hm < 900) {\n\t return '早上';\n\t } else if (hm < 1130) {\n\t return '上午';\n\t } else if (hm < 1230) {\n\t return '中午';\n\t } else if (hm < 1800) {\n\t return '下午';\n\t } else {\n\t return '晚上';\n\t }\n\t },\n\t calendar : {\n\t sameDay : function () {\n\t return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';\n\t },\n\t nextDay : function () {\n\t return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';\n\t },\n\t lastDay : function () {\n\t return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';\n\t },\n\t nextWeek : function () {\n\t var startOfWeek, prefix;\n\t startOfWeek = moment().startOf('week');\n\t prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]';\n\t return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';\n\t },\n\t lastWeek : function () {\n\t var startOfWeek, prefix;\n\t startOfWeek = moment().startOf('week');\n\t prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';\n\t return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';\n\t },\n\t sameElse : 'LL'\n\t },\n\t ordinalParse: /\\d{1,2}(日|月|周)/,\n\t ordinal : function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '日';\n\t case 'M':\n\t return number + '月';\n\t case 'w':\n\t case 'W':\n\t return number + '周';\n\t default:\n\t return number;\n\t }\n\t },\n\t relativeTime : {\n\t future : '%s内',\n\t past : '%s前',\n\t s : '几秒',\n\t m : '1 分钟',\n\t mm : '%d 分钟',\n\t h : '1 小时',\n\t hh : '%d 小时',\n\t d : '1 天',\n\t dd : '%d 天',\n\t M : '1 个月',\n\t MM : '%d 个月',\n\t y : '1 年',\n\t yy : '%d 年'\n\t },\n\t week : {\n\t // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n\t dow : 1, // Monday is the first day of the week.\n\t doy : 4 // The week that contains Jan 4th is the first week of the year.\n\t }\n\t });\n\t\n\t return zh_cn;\n\t\n\t}));\n\n/***/ },\n/* 185 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Chinese (Taiwan) [zh-tw]\n\t//! author : Ben : https://github.com/ben-lin\n\t//! author : Chris Lam : https://github.com/hehachris\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, function (moment) { 'use strict';\n\t\n\t\n\t var zh_tw = moment.defineLocale('zh-tw', {\n\t months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n\t monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n\t weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n\t weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n\t weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n\t longDateFormat : {\n\t LT : 'Ah點mm分',\n\t LTS : 'Ah點m分s秒',\n\t L : 'YYYY年MMMD日',\n\t LL : 'YYYY年MMMD日',\n\t LLL : 'YYYY年MMMD日Ah點mm分',\n\t LLLL : 'YYYY年MMMD日ddddAh點mm分',\n\t l : 'YYYY年MMMD日',\n\t ll : 'YYYY年MMMD日',\n\t lll : 'YYYY年MMMD日Ah點mm分',\n\t llll : 'YYYY年MMMD日ddddAh點mm分'\n\t },\n\t meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n\t meridiemHour : function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n\t return hour;\n\t } else if (meridiem === '中午') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === '下午' || meridiem === '晚上') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem : function (hour, minute, isLower) {\n\t var hm = hour * 100 + minute;\n\t if (hm < 600) {\n\t return '凌晨';\n\t } else if (hm < 900) {\n\t return '早上';\n\t } else if (hm < 1130) {\n\t return '上午';\n\t } else if (hm < 1230) {\n\t return '中午';\n\t } else if (hm < 1800) {\n\t return '下午';\n\t } else {\n\t return '晚上';\n\t }\n\t },\n\t calendar : {\n\t sameDay : '[今天]LT',\n\t nextDay : '[明天]LT',\n\t nextWeek : '[下]ddddLT',\n\t lastDay : '[昨天]LT',\n\t lastWeek : '[上]ddddLT',\n\t sameElse : 'L'\n\t },\n\t ordinalParse: /\\d{1,2}(日|月|週)/,\n\t ordinal : function (number, period) {\n\t switch (period) {\n\t case 'd' :\n\t case 'D' :\n\t case 'DDD' :\n\t return number + '日';\n\t case 'M' :\n\t return number + '月';\n\t case 'w' :\n\t case 'W' :\n\t return number + '週';\n\t default :\n\t return number;\n\t }\n\t },\n\t relativeTime : {\n\t future : '%s內',\n\t past : '%s前',\n\t s : '幾秒',\n\t m : '1 分鐘',\n\t mm : '%d 分鐘',\n\t h : '1 小時',\n\t hh : '%d 小時',\n\t d : '1 天',\n\t dd : '%d 天',\n\t M : '1 個月',\n\t MM : '%d 個月',\n\t y : '1 年',\n\t yy : '%d 年'\n\t }\n\t });\n\t\n\t return zh_tw;\n\t\n\t}));\n\n/***/ },\n/* 186 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _vue = __webpack_require__(8);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _chart = __webpack_require__(6);\n\t\n\tvar _chart2 = _interopRequireDefault(_chart);\n\t\n\tvar _options = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _vue2.default.extend({\n\t template: '\\n
\\n \\n
\\n ',\n\t\n\t props: {\n\t chartId: {\n\t default: 'bar-chart',\n\t type: String\n\t },\n\t width: {\n\t default: 400,\n\t type: Number\n\t },\n\t height: {\n\t default: 400,\n\t type: Number\n\t }\n\t },\n\t\n\t data: function data() {\n\t return {\n\t defaultOptions: {\n\t scales: {\n\t yAxes: [{\n\t ticks: {\n\t beginAtZero: true\n\t },\n\t gridLines: {\n\t display: false\n\t }\n\t }],\n\t xAxes: [{\n\t gridLines: {\n\t display: false\n\t },\n\t categoryPercentage: 0.5,\n\t barPercentage: 0.2\n\t }]\n\t }\n\t }\n\t };\n\t },\n\t\n\t\n\t methods: {\n\t render: function render(data, options) {\n\t var chartOptions = (0, _options.mergeOptions)(this.defaultOptions, options);\n\t\n\t this._chart = new _chart2.default(this.$els.canvas.getContext('2d'), {\n\t type: 'bar',\n\t data: data,\n\t options: chartOptions\n\t });\n\t this._chart.generateLegend();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._chart.destroy();\n\t }\n\t});\n\n/***/ },\n/* 187 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _vue = __webpack_require__(8);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _chart = __webpack_require__(6);\n\t\n\tvar _chart2 = _interopRequireDefault(_chart);\n\t\n\tvar _options = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _vue2.default.extend({\n\t template: '\\n
\\n \\n
\\n ',\n\t\n\t props: {\n\t chartId: {\n\t default: 'bubble-chart',\n\t type: String\n\t },\n\t width: {\n\t default: 400,\n\t type: Number\n\t },\n\t height: {\n\t default: 400,\n\t type: Number\n\t }\n\t },\n\t\n\t data: function data() {\n\t return {\n\t defaultOptions: {}\n\t };\n\t },\n\t\n\t\n\t methods: {\n\t render: function render(data, options) {\n\t var chartOptions = (0, _options.mergeOptions)(this.defaultOptions, options);\n\t\n\t this._chart = new _chart2.default(this.$els.canvas.getContext('2d'), {\n\t type: 'bubble',\n\t data: data,\n\t options: chartOptions\n\t });\n\t this._chart.generateLegend();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._chart.destroy();\n\t }\n\t});\n\n/***/ },\n/* 188 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _vue = __webpack_require__(8);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _chart = __webpack_require__(6);\n\t\n\tvar _chart2 = _interopRequireDefault(_chart);\n\t\n\tvar _options = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _vue2.default.extend({\n\t template: '\\n
\\n \\n
\\n ',\n\t\n\t props: {\n\t chartId: {\n\t default: 'doughnut-chart',\n\t type: String\n\t },\n\t width: {\n\t default: 400,\n\t type: Number\n\t },\n\t height: {\n\t default: 400,\n\t type: Number\n\t }\n\t },\n\t\n\t data: function data() {\n\t return {\n\t defaultOptions: {}\n\t };\n\t },\n\t\n\t\n\t methods: {\n\t render: function render(data, options) {\n\t var chartOptions = (0, _options.mergeOptions)(this.defaultOptions, options);\n\t\n\t this._chart = new _chart2.default(this.$els.canvas.getContext('2d'), {\n\t type: 'doughnut',\n\t data: data,\n\t options: chartOptions\n\t });\n\t this._chart.generateLegend();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._chart.destroy();\n\t }\n\t});\n\n/***/ },\n/* 189 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _vue = __webpack_require__(8);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _chart = __webpack_require__(6);\n\t\n\tvar _chart2 = _interopRequireDefault(_chart);\n\t\n\tvar _options = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _vue2.default.extend({\n\t template: '\\n
\\n \\n
\\n ',\n\t\n\t props: {\n\t chartId: {\n\t default: 'line-chart',\n\t type: String\n\t },\n\t width: {\n\t default: 400,\n\t type: Number\n\t },\n\t height: {\n\t default: 400,\n\t type: Number\n\t }\n\t },\n\t\n\t data: function data() {\n\t return {\n\t defaultOptions: {\n\t scales: {\n\t yAxes: [{\n\t ticks: {\n\t beginAtZero: true\n\t },\n\t gridLines: {\n\t display: false\n\t }\n\t }],\n\t xAxes: [{\n\t gridLines: {\n\t display: false\n\t }\n\t }]\n\t }\n\t }\n\t };\n\t },\n\t\n\t\n\t methods: {\n\t render: function render(data, options) {\n\t var chartOptions = (0, _options.mergeOptions)(this.defaultOptions, options);\n\t\n\t this._chart = new _chart2.default(this.$els.canvas.getContext('2d'), {\n\t type: 'line',\n\t data: data,\n\t options: chartOptions\n\t });\n\t this._chart.generateLegend();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._chart.destroy();\n\t }\n\t});\n\n/***/ },\n/* 190 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _vue = __webpack_require__(8);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _chart = __webpack_require__(6);\n\t\n\tvar _chart2 = _interopRequireDefault(_chart);\n\t\n\tvar _options = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _vue2.default.extend({\n\t template: '\\n
\\n \\n
\\n ',\n\t\n\t props: {\n\t chartId: {\n\t default: 'pie-chart',\n\t type: String\n\t },\n\t width: {\n\t default: 400,\n\t type: Number\n\t },\n\t height: {\n\t default: 400,\n\t type: Number\n\t }\n\t },\n\t\n\t data: function data() {\n\t return {\n\t defaultOptions: {}\n\t };\n\t },\n\t\n\t\n\t methods: {\n\t render: function render(data, options) {\n\t var chartOptions = (0, _options.mergeOptions)(this.defaultOptions, options);\n\t\n\t this._chart = new _chart2.default(this.$els.canvas.getContext('2d'), {\n\t type: 'pie',\n\t data: data,\n\t options: chartOptions\n\t });\n\t this._chart.generateLegend();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._chart.destroy();\n\t }\n\t});\n\n/***/ },\n/* 191 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _vue = __webpack_require__(8);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _chart = __webpack_require__(6);\n\t\n\tvar _chart2 = _interopRequireDefault(_chart);\n\t\n\tvar _options = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _vue2.default.extend({\n\t template: '\\n
\\n \\n
\\n ',\n\t\n\t props: {\n\t chartId: {\n\t default: 'polar-chart',\n\t type: String\n\t },\n\t width: {\n\t default: 400,\n\t type: Number\n\t },\n\t height: {\n\t default: 400,\n\t type: Number\n\t }\n\t },\n\t\n\t data: function data() {\n\t return {\n\t defaultOptions: {}\n\t };\n\t },\n\t\n\t\n\t methods: {\n\t render: function render(data, options) {\n\t var chartOptions = (0, _options.mergeOptions)(this.defaultOptions, options);\n\t\n\t this._chart = new _chart2.default(this.$els.canvas.getContext('2d'), {\n\t type: 'polarArea',\n\t data: data,\n\t options: chartOptions\n\t });\n\t this._chart.generateLegend();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._chart.destroy();\n\t }\n\t});\n\n/***/ },\n/* 192 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _vue = __webpack_require__(8);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _chart = __webpack_require__(6);\n\t\n\tvar _chart2 = _interopRequireDefault(_chart);\n\t\n\tvar _options = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = _vue2.default.extend({\n\t template: '\\n
\\n \\n
\\n ',\n\t\n\t props: {\n\t chartId: {\n\t default: 'radar-chart',\n\t type: String\n\t },\n\t width: {\n\t default: 400,\n\t type: Number\n\t },\n\t height: {\n\t default: 400,\n\t type: Number\n\t }\n\t },\n\t\n\t data: function data() {\n\t return {\n\t defaultOptions: {}\n\t };\n\t },\n\t\n\t\n\t methods: {\n\t render: function render(data, options) {\n\t var chartOptions = (0, _options.mergeOptions)(this.defaultOptions, options);\n\t\n\t this._chart = new _chart2.default(this.$els.canvas.getContext('2d'), {\n\t type: 'radar',\n\t data: data,\n\t options: chartOptions\n\t });\n\t this._chart.generateLegend();\n\t }\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t this._chart.destroy();\n\t }\n\t});\n\n/***/ },\n/* 193 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tChart.Bar = function(context, config) {\n\t\t\tconfig.type = 'bar';\n\t\n\t\t\treturn new Chart(context, config);\n\t\t};\n\t\n\t};\n\n/***/ },\n/* 194 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tChart.Bubble = function(context, config) {\n\t\t\tconfig.type = 'bubble';\n\t\t\treturn new Chart(context, config);\n\t\t};\n\t\n\t};\n\n/***/ },\n/* 195 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tChart.Doughnut = function(context, config) {\n\t\t\tconfig.type = 'doughnut';\n\t\n\t\t\treturn new Chart(context, config);\n\t\t};\n\t\n\t};\n\n/***/ },\n/* 196 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tChart.Line = function(context, config) {\n\t\t\tconfig.type = 'line';\n\t\n\t\t\treturn new Chart(context, config);\n\t\t};\n\t\n\t};\n\n/***/ },\n/* 197 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tChart.PolarArea = function(context, config) {\n\t\t\tconfig.type = 'polarArea';\n\t\n\t\t\treturn new Chart(context, config);\n\t\t};\n\t\n\t};\n\n/***/ },\n/* 198 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\t\n\t\tChart.Radar = function(context, config) {\n\t\t\tconfig.options = Chart.helpers.configMerge({ aspectRatio: 1 }, config.options);\n\t\t\tconfig.type = 'radar';\n\t\n\t\t\treturn new Chart(context, config);\n\t\t};\n\t\n\t};\n\n\n/***/ },\n/* 199 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar defaultConfig = {\n\t\t\thover: {\n\t\t\t\tmode: 'single'\n\t\t\t},\n\t\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\ttype: \"linear\", // scatter should not use a category axis\n\t\t\t\t\tposition: \"bottom\",\n\t\t\t\t\tid: \"x-axis-1\" // need an ID so datasets can reference the scale\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\ttype: \"linear\",\n\t\t\t\t\tposition: \"left\",\n\t\t\t\t\tid: \"y-axis-1\"\n\t\t\t\t}]\n\t\t\t},\n\t\n\t\t\ttooltips: {\n\t\t\t\tcallbacks: {\n\t\t\t\t\ttitle: function() {\n\t\t\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t},\n\t\t\t\t\tlabel: function(tooltipItem) {\n\t\t\t\t\t\treturn '(' + tooltipItem.xLabel + ', ' + tooltipItem.yLabel + ')';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\t// Register the default config for this type\n\t\tChart.defaults.scatter = defaultConfig;\n\t\n\t\t// Scatter charts use line controllers\n\t\tChart.controllers.scatter = Chart.controllers.line;\n\t\n\t\tChart.Scatter = function(context, config) {\n\t\t\tconfig.type = 'scatter';\n\t\t\treturn new Chart(context, config);\n\t\t};\n\t\n\t};\n\n/***/ },\n/* 200 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar helpers = Chart.helpers;\n\t\n\t\tChart.defaults.bar = {\n\t\t\thover: {\n\t\t\t\tmode: \"label\"\n\t\t\t},\n\t\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\ttype: \"category\",\n\t\n\t\t\t\t\t// Specific to Bar Controller\n\t\t\t\t\tcategoryPercentage: 0.8,\n\t\t\t\t\tbarPercentage: 0.9,\n\t\n\t\t\t\t\t// grid line settings\n\t\t\t\t\tgridLines: {\n\t\t\t\t\t\toffsetGridLines: true\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\ttype: \"linear\"\n\t\t\t\t}]\n\t\t\t}\n\t\t};\n\t\n\t\tChart.controllers.bar = Chart.DatasetController.extend({\n\t\n\t\t\tdataElementType: Chart.elements.Rectangle,\n\t\n\t\t\tinitialize: function(chart, datasetIndex) {\n\t\t\t\tChart.DatasetController.prototype.initialize.call(this, chart, datasetIndex);\n\t\n\t\t\t\t// Use this to indicate that this is a bar dataset.\n\t\t\t\tthis.getMeta().bar = true;\n\t\t\t},\n\t\n\t\t\t// Get the number of datasets that display bars. We use this to correctly calculate the bar width\n\t\t\tgetBarCount: function() {\n\t\t\t\tvar me = this;\n\t\t\t\tvar barCount = 0;\n\t\t\t\thelpers.each(me.chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = me.chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (meta.bar && me.chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\t\t++barCount;\n\t\t\t\t\t}\n\t\t\t\t}, me);\n\t\t\t\treturn barCount;\n\t\t\t},\n\t\n\t\t\tupdate: function(reset) {\n\t\t\t\tvar me = this;\n\t\t\t\thelpers.each(me.getMeta().data, function(rectangle, index) {\n\t\t\t\t\tme.updateElement(rectangle, index, reset);\n\t\t\t\t}, me);\n\t\t\t},\n\t\n\t\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\t\tvar scaleBase = yScale.getBasePixel();\n\t\t\t\tvar rectangleElementOptions = me.chart.options.elements.rectangle;\n\t\t\t\tvar custom = rectangle.custom || {};\n\t\t\t\tvar dataset = me.getDataset();\n\t\n\t\t\t\thelpers.extend(rectangle, {\n\t\t\t\t\t// Utility\n\t\t\t\t\t_xScale: xScale,\n\t\t\t\t\t_yScale: yScale,\n\t\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t\t_index: index,\n\t\n\t\t\t\t\t// Desired view properties\n\t\t\t\t\t_model: {\n\t\t\t\t\t\tx: me.calculateBarX(index, me.index),\n\t\t\t\t\t\ty: reset ? scaleBase : me.calculateBarY(index, me.index),\n\t\n\t\t\t\t\t\t// Tooltip\n\t\t\t\t\t\tlabel: me.chart.data.labels[index],\n\t\t\t\t\t\tdatasetLabel: dataset.label,\n\t\n\t\t\t\t\t\t// Appearance\n\t\t\t\t\t\tbase: reset ? scaleBase : me.calculateBarBase(me.index, index),\n\t\t\t\t\t\twidth: me.calculateBarWidth(index),\n\t\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor),\n\t\t\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped,\n\t\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor),\n\t\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\trectangle.pivot();\n\t\t\t},\n\t\n\t\t\tcalculateBarBase: function(datasetIndex, index) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\t\tvar base = 0;\n\t\n\t\t\t\tif (yScale.options.stacked) {\n\t\t\t\t\tvar chart = me.chart;\n\t\t\t\t\tvar datasets = chart.data.datasets;\n\t\t\t\t\tvar value = Number(datasets[datasetIndex].data[index]);\n\t\n\t\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\t\tvar currentDs = datasets[i];\n\t\t\t\t\t\tvar currentDsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\t\tif (currentDsMeta.bar && currentDsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\t\tvar currentVal = Number(currentDs.data[index]);\n\t\t\t\t\t\t\tbase += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\treturn yScale.getPixelForValue(base);\n\t\t\t\t}\n\t\n\t\t\t\treturn yScale.getBasePixel();\n\t\t\t},\n\t\n\t\t\tgetRuler: function(index) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\t\tvar datasetCount = me.getBarCount();\n\t\n\t\t\t\tvar tickWidth;\n\t\n\t\t\t\tif (xScale.options.type === 'category') {\n\t\t\t\t\ttickWidth = xScale.getPixelForTick(index + 1) - xScale.getPixelForTick(index);\n\t\t\t\t} else {\n\t\t\t\t\t// Average width\n\t\t\t\t\ttickWidth = xScale.width / xScale.ticks.length;\n\t\t\t\t}\n\t\t\t\tvar categoryWidth = tickWidth * xScale.options.categoryPercentage;\n\t\t\t\tvar categorySpacing = (tickWidth - (tickWidth * xScale.options.categoryPercentage)) / 2;\n\t\t\t\tvar fullBarWidth = categoryWidth / datasetCount;\n\t\n\t\t\t\tif (xScale.ticks.length !== me.chart.data.labels.length) {\n\t\t\t\t var perc = xScale.ticks.length / me.chart.data.labels.length;\n\t\t\t\t fullBarWidth = fullBarWidth * perc;\n\t\t\t\t}\n\t\n\t\t\t\tvar barWidth = fullBarWidth * xScale.options.barPercentage;\n\t\t\t\tvar barSpacing = fullBarWidth - (fullBarWidth * xScale.options.barPercentage);\n\t\n\t\t\t\treturn {\n\t\t\t\t\tdatasetCount: datasetCount,\n\t\t\t\t\ttickWidth: tickWidth,\n\t\t\t\t\tcategoryWidth: categoryWidth,\n\t\t\t\t\tcategorySpacing: categorySpacing,\n\t\t\t\t\tfullBarWidth: fullBarWidth,\n\t\t\t\t\tbarWidth: barWidth,\n\t\t\t\t\tbarSpacing: barSpacing\n\t\t\t\t};\n\t\t\t},\n\t\n\t\t\tcalculateBarWidth: function(index) {\n\t\t\t\tvar xScale = this.getScaleForId(this.getMeta().xAxisID);\n\t\t\t\tif (xScale.options.barThickness) {\n\t\t\t\t\treturn xScale.options.barThickness;\n\t\t\t\t}\n\t\t\t\tvar ruler = this.getRuler(index);\n\t\t\t\treturn xScale.options.stacked ? ruler.categoryWidth : ruler.barWidth;\n\t\t\t},\n\t\n\t\t\t// Get bar index from the given dataset index accounting for the fact that not all bars are visible\n\t\t\tgetBarIndex: function(datasetIndex) {\n\t\t\t\tvar barIndex = 0;\n\t\t\t\tvar meta, j;\n\t\n\t\t\t\tfor (j = 0; j < datasetIndex; ++j) {\n\t\t\t\t\tmeta = this.chart.getDatasetMeta(j);\n\t\t\t\t\tif (meta.bar && this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t\t++barIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn barIndex;\n\t\t\t},\n\t\n\t\t\tcalculateBarX: function(index, datasetIndex) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\t\tvar barIndex = me.getBarIndex(datasetIndex);\n\t\n\t\t\t\tvar ruler = me.getRuler(index);\n\t\t\t\tvar leftTick = xScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo);\n\t\t\t\tleftTick -= me.chart.isCombo ? (ruler.tickWidth / 2) : 0;\n\t\n\t\t\t\tif (xScale.options.stacked) {\n\t\t\t\t\treturn leftTick + (ruler.categoryWidth / 2) + ruler.categorySpacing;\n\t\t\t\t}\n\t\n\t\t\t\treturn leftTick +\n\t\t\t\t\t(ruler.barWidth / 2) +\n\t\t\t\t\truler.categorySpacing +\n\t\t\t\t\t(ruler.barWidth * barIndex) +\n\t\t\t\t\t(ruler.barSpacing / 2) +\n\t\t\t\t\t(ruler.barSpacing * barIndex);\n\t\t\t},\n\t\n\t\t\tcalculateBarY: function(index, datasetIndex) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\t\tvar value = Number(me.getDataset().data[index]);\n\t\n\t\t\t\tif (yScale.options.stacked) {\n\t\n\t\t\t\t\tvar sumPos = 0,\n\t\t\t\t\t\tsumNeg = 0;\n\t\n\t\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\t\tvar ds = me.chart.data.datasets[i];\n\t\t\t\t\t\tvar dsMeta = me.chart.getDatasetMeta(i);\n\t\t\t\t\t\tif (dsMeta.bar && dsMeta.yAxisID === yScale.id && me.chart.isDatasetVisible(i)) {\n\t\t\t\t\t\t\tvar stackedVal = Number(ds.data[index]);\n\t\t\t\t\t\t\tif (stackedVal < 0) {\n\t\t\t\t\t\t\t\tsumNeg += stackedVal || 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsumPos += stackedVal || 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (value < 0) {\n\t\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn yScale.getPixelForValue(sumPos + value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn yScale.getPixelForValue(value);\n\t\t\t},\n\t\n\t\t\tdraw: function(ease) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar easingDecimal = ease || 1;\n\t\t\t\thelpers.each(me.getMeta().data, function(rectangle, index) {\n\t\t\t\t\tvar d = me.getDataset().data[index];\n\t\t\t\t\tif (d !== null && d !== undefined && !isNaN(d)) {\n\t\t\t\t\t\trectangle.transition(easingDecimal).draw();\n\t\t\t\t\t}\n\t\t\t\t}, me);\n\t\t\t},\n\t\n\t\t\tsetHoverStyle: function(rectangle) {\n\t\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\t\tvar index = rectangle._index;\n\t\n\t\t\t\tvar custom = rectangle.custom || {};\n\t\t\t\tvar model = rectangle._model;\n\t\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t\t},\n\t\n\t\t\tremoveHoverStyle: function(rectangle) {\n\t\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\t\tvar index = rectangle._index;\n\t\t\t\tvar custom = rectangle.custom || {};\n\t\t\t\tvar model = rectangle._model;\n\t\t\t\tvar rectangleElementOptions = this.chart.options.elements.rectangle;\n\t\n\t\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor);\n\t\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor);\n\t\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth);\n\t\t\t}\n\t\n\t\t});\n\t\n\t\n\t\t// including horizontalBar in the bar file, instead of a file of its own\n\t\t// it extends bar (like pie extends doughnut)\n\t\tChart.defaults.horizontalBar = {\n\t\t\thover: {\n\t\t\t\tmode: \"label\"\n\t\t\t},\n\t\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\ttype: \"linear\",\n\t\t\t\t\tposition: \"bottom\"\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\tposition: \"left\",\n\t\t\t\t\ttype: \"category\",\n\t\n\t\t\t\t\t// Specific to Horizontal Bar Controller\n\t\t\t\t\tcategoryPercentage: 0.8,\n\t\t\t\t\tbarPercentage: 0.9,\n\t\n\t\t\t\t\t// grid line settings\n\t\t\t\t\tgridLines: {\n\t\t\t\t\t\toffsetGridLines: true\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t},\n\t\t\telements: {\n\t\t\t\trectangle: {\n\t\t\t\t\tborderSkipped: 'left'\n\t\t\t\t}\n\t\t\t},\n\t\t\ttooltips: {\n\t\t\t\tcallbacks: {\n\t\t\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t\t\t// Pick first xLabel for now\n\t\t\t\t\t\tvar title = '';\n\t\n\t\t\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\t\t\tif (tooltipItems[0].yLabel) {\n\t\t\t\t\t\t\t\ttitle = tooltipItems[0].yLabel;\n\t\t\t\t\t\t\t} else if (data.labels.length > 0 && tooltipItems[0].index < data.labels.length) {\n\t\t\t\t\t\t\t\ttitle = data.labels[tooltipItems[0].index];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\treturn title;\n\t\t\t\t\t},\n\t\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\t\tvar datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';\n\t\t\t\t\treturn datasetLabel + ': ' + tooltipItem.xLabel;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\t\tvar scaleBase = xScale.getBasePixel();\n\t\t\t\tvar custom = rectangle.custom || {};\n\t\t\t\tvar dataset = me.getDataset();\n\t\t\t\tvar rectangleElementOptions = me.chart.options.elements.rectangle;\n\t\n\t\t\t\thelpers.extend(rectangle, {\n\t\t\t\t\t// Utility\n\t\t\t\t\t_xScale: xScale,\n\t\t\t\t\t_yScale: yScale,\n\t\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t\t_index: index,\n\t\n\t\t\t\t\t// Desired view properties\n\t\t\t\t\t_model: {\n\t\t\t\t\t\tx: reset ? scaleBase : me.calculateBarX(index, me.index),\n\t\t\t\t\t\ty: me.calculateBarY(index, me.index),\n\t\n\t\t\t\t\t\t// Tooltip\n\t\t\t\t\t\tlabel: me.chart.data.labels[index],\n\t\t\t\t\t\tdatasetLabel: dataset.label,\n\t\n\t\t\t\t\t\t// Appearance\n\t\t\t\t\t\tbase: reset ? scaleBase : me.calculateBarBase(me.index, index),\n\t\t\t\t\t\theight: me.calculateBarHeight(index),\n\t\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor),\n\t\t\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped,\n\t\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor),\n\t\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth)\n\t\t\t\t\t},\n\t\n\t\t\t\t\tdraw: function () {\n\t\t\t\t\t\tvar ctx = this._chart.ctx;\n\t\t\t\t\t\tvar vm = this._view;\n\t\n\t\t\t\t\t\tvar halfHeight = vm.height / 2,\n\t\t\t\t\t\t\ttopY = vm.y - halfHeight,\n\t\t\t\t\t\t\tbottomY = vm.y + halfHeight,\n\t\t\t\t\t\t\tright = vm.base - (vm.base - vm.x),\n\t\t\t\t\t\t\thalfStroke = vm.borderWidth / 2;\n\t\n\t\t\t\t\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t\t\t\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\t\t\t\t\tif (vm.borderWidth) {\n\t\t\t\t\t\t\ttopY += halfStroke;\n\t\t\t\t\t\t\tbottomY -= halfStroke;\n\t\t\t\t\t\t\tright += halfStroke;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tctx.beginPath();\n\t\n\t\t\t\t\t\tctx.fillStyle = vm.backgroundColor;\n\t\t\t\t\t\tctx.strokeStyle = vm.borderColor;\n\t\t\t\t\t\tctx.lineWidth = vm.borderWidth;\n\t\n\t\t\t\t\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t\t\t\t\t// | 1 2 |\n\t\t\t\t\t\t// | 0 3 |\n\t\t\t\t\t\tvar corners = [\n\t\t\t\t\t\t\t[vm.base, bottomY],\n\t\t\t\t\t\t\t[vm.base, topY],\n\t\t\t\t\t\t\t[right, topY],\n\t\t\t\t\t\t\t[right, bottomY]\n\t\t\t\t\t\t];\n\t\n\t\t\t\t\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\t\t\t\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\t\t\t\t\tvar startCorner = borders.indexOf(vm.borderSkipped, 0);\n\t\t\t\t\t\tif (startCorner === -1)\n\t\t\t\t\t\t\tstartCorner = 0;\n\t\n\t\t\t\t\t\tfunction cornerAt(index) {\n\t\t\t\t\t\t\treturn corners[(startCorner + index) % 4];\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Draw rectangle from 'startCorner'\n\t\t\t\t\t\tctx.moveTo.apply(ctx, cornerAt(0));\n\t\t\t\t\t\tfor (var i = 1; i < 4; i++)\n\t\t\t\t\t\t\tctx.lineTo.apply(ctx, cornerAt(i));\n\t\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t\tif (vm.borderWidth) {\n\t\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\n\t\t\t\t\tinRange: function (mouseX, mouseY) {\n\t\t\t\t\t\tvar vm = this._view;\n\t\t\t\t\t\tvar inRange = false;\n\t\n\t\t\t\t\t\tif (vm) {\n\t\t\t\t\t\t\tif (vm.x < vm.base) {\n\t\t\t\t\t\t\t\tinRange = (mouseY >= vm.y - vm.height / 2 && mouseY <= vm.y + vm.height / 2) && (mouseX >= vm.x && mouseX <= vm.base);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tinRange = (mouseY >= vm.y - vm.height / 2 && mouseY <= vm.y + vm.height / 2) && (mouseX >= vm.base && mouseX <= vm.x);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\treturn inRange;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\trectangle.pivot();\n\t\t\t},\n\t\n\t\t\tcalculateBarBase: function (datasetIndex, index) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\t\tvar base = 0;\n\t\n\t\t\t\tif (xScale.options.stacked) {\n\t\t\t\t\tvar chart = me.chart;\n\t\t\t\t\tvar datasets = chart.data.datasets;\n\t\t\t\t\tvar value = Number(datasets[datasetIndex].data[index]);\n\t\n\t\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\t\tvar currentDs = datasets[i];\n\t\t\t\t\t\tvar currentDsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\t\tif (currentDsMeta.bar && currentDsMeta.xAxisID === xScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\t\tvar currentVal = Number(currentDs.data[index]);\n\t\t\t\t\t\t\tbase += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\treturn xScale.getPixelForValue(base);\n\t\t\t\t}\n\t\n\t\t\t\treturn xScale.getBasePixel();\n\t\t\t},\n\t\n\t\t\tgetRuler: function (index) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\t\tvar datasetCount = me.getBarCount();\n\t\n\t\t\t\tvar tickHeight;\n\t\t\t\tif (yScale.options.type === 'category') {\n\t\t\t\t\ttickHeight = yScale.getPixelForTick(index + 1) - yScale.getPixelForTick(index);\n\t\t\t\t} else {\n\t\t\t\t\t// Average width\n\t\t\t\t\ttickHeight = yScale.width / yScale.ticks.length;\n\t\t\t\t}\n\t\t\t\tvar categoryHeight = tickHeight * yScale.options.categoryPercentage;\n\t\t\t\tvar categorySpacing = (tickHeight - (tickHeight * yScale.options.categoryPercentage)) / 2;\n\t\t\t\tvar fullBarHeight = categoryHeight / datasetCount;\n\t\n\t\t\t\tif (yScale.ticks.length !== me.chart.data.labels.length) {\n\t\t\t\t\tvar perc = yScale.ticks.length / me.chart.data.labels.length;\n\t\t\t\t\tfullBarHeight = fullBarHeight * perc;\n\t\t\t\t}\n\t\n\t\t\t\tvar barHeight = fullBarHeight * yScale.options.barPercentage;\n\t\t\t\tvar barSpacing = fullBarHeight - (fullBarHeight * yScale.options.barPercentage);\n\t\n\t\t\t\treturn {\n\t\t\t\t\tdatasetCount: datasetCount,\n\t\t\t\t\ttickHeight: tickHeight,\n\t\t\t\t\tcategoryHeight: categoryHeight,\n\t\t\t\t\tcategorySpacing: categorySpacing,\n\t\t\t\t\tfullBarHeight: fullBarHeight,\n\t\t\t\t\tbarHeight: barHeight,\n\t\t\t\t\tbarSpacing: barSpacing\n\t\t\t\t};\n\t\t\t},\n\t\n\t\t\tcalculateBarHeight: function (index) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar yScale = me.getScaleForId(me.getMeta().yAxisID);\n\t\t\t\tif (yScale.options.barThickness) {\n\t\t\t\t\treturn yScale.options.barThickness;\n\t\t\t\t}\n\t\t\t\tvar ruler = me.getRuler(index);\n\t\t\t\treturn yScale.options.stacked ? ruler.categoryHeight : ruler.barHeight;\n\t\t\t},\n\t\n\t\t\tcalculateBarX: function (index, datasetIndex) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\t\tvar value = Number(me.getDataset().data[index]);\n\t\n\t\t\t\tif (xScale.options.stacked) {\n\t\n\t\t\t\t\tvar sumPos = 0,\n\t\t\t\t\t\tsumNeg = 0;\n\t\n\t\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\t\tvar ds = me.chart.data.datasets[i];\n\t\t\t\t\t\tvar dsMeta = me.chart.getDatasetMeta(i);\n\t\t\t\t\t\tif (dsMeta.bar && dsMeta.xAxisID === xScale.id && me.chart.isDatasetVisible(i)) {\n\t\t\t\t\t\t\tvar stackedVal = Number(ds.data[index]);\n\t\t\t\t\t\t\tif (stackedVal < 0) {\n\t\t\t\t\t\t\t\tsumNeg += stackedVal || 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsumPos += stackedVal || 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (value < 0) {\n\t\t\t\t\t\treturn xScale.getPixelForValue(sumNeg + value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn xScale.getPixelForValue(sumPos + value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn xScale.getPixelForValue(value);\n\t\t\t},\n\t\n\t\t\tcalculateBarY: function (index, datasetIndex) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\t\tvar barIndex = me.getBarIndex(datasetIndex);\n\t\n\t\t\t\tvar ruler = me.getRuler(index);\n\t\t\t\tvar topTick = yScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo);\n\t\t\t\ttopTick -= me.chart.isCombo ? (ruler.tickHeight / 2) : 0;\n\t\n\t\t\t\tif (yScale.options.stacked) {\n\t\t\t\t\treturn topTick + (ruler.categoryHeight / 2) + ruler.categorySpacing;\n\t\t\t\t}\n\t\n\t\t\t\treturn topTick +\n\t\t\t\t\t(ruler.barHeight / 2) +\n\t\t\t\t\truler.categorySpacing +\n\t\t\t\t\t(ruler.barHeight * barIndex) +\n\t\t\t\t\t(ruler.barSpacing / 2) +\n\t\t\t\t\t(ruler.barSpacing * barIndex);\n\t\t\t}\n\t\t});\n\t};\n\n\n/***/ },\n/* 201 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar helpers = Chart.helpers;\n\t\n\t\tChart.defaults.bubble = {\n\t\t\thover: {\n\t\t\t\tmode: \"single\"\n\t\t\t},\n\t\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\ttype: \"linear\", // bubble should probably use a linear scale by default\n\t\t\t\t\tposition: \"bottom\",\n\t\t\t\t\tid: \"x-axis-0\" // need an ID so datasets can reference the scale\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\ttype: \"linear\",\n\t\t\t\t\tposition: \"left\",\n\t\t\t\t\tid: \"y-axis-0\"\n\t\t\t\t}]\n\t\t\t},\n\t\n\t\t\ttooltips: {\n\t\t\t\tcallbacks: {\n\t\t\t\t\ttitle: function() {\n\t\t\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t},\n\t\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\t\tvar datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';\n\t\t\t\t\t\tvar dataPoint = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\t\t\t\t\t\treturn datasetLabel + ': (' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.r + ')';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\n\t\t\tdataElementType: Chart.elements.Point,\n\t\n\t\t\tupdate: function(reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar points = meta.data;\n\t\n\t\t\t\t// Update Points\n\t\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tupdateElement: function(point, index, reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\n\t\t\t\tvar custom = point.custom || {};\n\t\t\t\tvar dataset = me.getDataset();\n\t\t\t\tvar data = dataset.data[index];\n\t\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\t\tvar dsIndex = me.index;\n\t\n\t\t\t\thelpers.extend(point, {\n\t\t\t\t\t// Utility\n\t\t\t\t\t_xScale: xScale,\n\t\t\t\t\t_yScale: yScale,\n\t\t\t\t\t_datasetIndex: dsIndex,\n\t\t\t\t\t_index: index,\n\t\n\t\t\t\t\t// Desired view properties\n\t\t\t\t\t_model: {\n\t\t\t\t\t\tx: reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex, me.chart.isCombo),\n\t\t\t\t\t\ty: reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex),\n\t\t\t\t\t\t// Appearance\n\t\t\t\t\t\tradius: reset ? 0 : custom.radius ? custom.radius : me.getRadius(data),\n\t\n\t\t\t\t\t\t// Tooltip\n\t\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\t// Trick to reset the styles of the point\n\t\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(me, point, pointElementOptions);\n\t\n\t\t\t\tvar model = point._model;\n\t\t\t\tmodel.skip = custom.skip ? custom.skip : (isNaN(model.x) || isNaN(model.y));\n\t\n\t\t\t\tpoint.pivot();\n\t\t\t},\n\t\n\t\t\tgetRadius: function(value) {\n\t\t\t\treturn value.r || this.chart.options.elements.point.radius;\n\t\t\t},\n\t\n\t\t\tsetHoverStyle: function(point) {\n\t\t\t\tvar me = this;\n\t\t\t\tChart.DatasetController.prototype.setHoverStyle.call(me, point);\n\t\n\t\t\t\t// Radius\n\t\t\t\tvar dataset = me.chart.data.datasets[point._datasetIndex];\n\t\t\t\tvar index = point._index;\n\t\t\t\tvar custom = point.custom || {};\n\t\t\t\tvar model = point._model;\n\t\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : (helpers.getValueAtIndexOrDefault(dataset.hoverRadius, index, me.chart.options.elements.point.hoverRadius)) + me.getRadius(dataset.data[index]);\n\t\t\t},\n\t\n\t\t\tremoveHoverStyle: function(point) {\n\t\t\t\tvar me = this;\n\t\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(me, point, me.chart.options.elements.point);\n\t\n\t\t\t\tvar dataVal = me.chart.data.datasets[point._datasetIndex].data[point._index];\n\t\t\t\tvar custom = point.custom || {};\n\t\t\t\tvar model = point._model;\n\t\n\t\t\t\tmodel.radius = custom.radius ? custom.radius : me.getRadius(dataVal);\n\t\t\t}\n\t\t});\n\t};\n\n\n/***/ },\n/* 202 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar helpers = Chart.helpers,\n\t\t\tdefaults = Chart.defaults;\n\t\n\t\tdefaults.doughnut = {\n\t\t\tanimation: {\n\t\t\t\t//Boolean - Whether we animate the rotation of the Doughnut\n\t\t\t\tanimateRotate: true,\n\t\t\t\t//Boolean - Whether we animate scaling the Doughnut from the centre\n\t\t\t\tanimateScale: false\n\t\t\t},\n\t\t\taspectRatio: 1,\n\t\t\thover: {\n\t\t\t\tmode: 'single'\n\t\t\t},\n\t\t\tlegendCallback: function(chart) {\n\t\t\t\tvar text = [];\n\t\t\t\ttext.push('
    ');\n\t\n\t\t\t\tvar data = chart.data;\n\t\t\t\tvar datasets = data.datasets;\n\t\t\t\tvar labels = data.labels;\n\t\n\t\t\t\tif (datasets.length) {\n\t\t\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\t\t\ttext.push('
  • ');\n\t\t\t\t\t\tif (labels[i]) {\n\t\t\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext.push('
  • ');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\ttext.push('
');\n\t\t\t\treturn text.join(\"\");\n\t\t\t},\n\t\t\tlegend: {\n\t\t\t\tlabels: {\n\t\t\t\t\tgenerateLabels: function(chart) {\n\t\t\t\t\t\tvar data = chart.data;\n\t\t\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\t\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\t\n\t\t\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn [];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\n\t\t\t\tonClick: function(e, legendItem) {\n\t\t\t\t\tvar index = legendItem.index;\n\t\t\t\t\tvar chart = this.chart;\n\t\t\t\t\tvar i, ilen, meta;\n\t\n\t\t\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tchart.update();\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t//The percentage of the chart that we cut out of the middle.\n\t\t\tcutoutPercentage: 50,\n\t\n\t\t\t//The rotation of the chart, where the first data arc begins.\n\t\t\trotation: Math.PI * -0.5,\n\t\n\t\t\t//The total circumference of the chart.\n\t\t\tcircumference: Math.PI * 2.0,\n\t\n\t\t\t// Need to override these to give a nice default\n\t\t\ttooltips: {\n\t\t\t\tcallbacks: {\n\t\t\t\t\ttitle: function() {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t},\n\t\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\t\treturn data.labels[tooltipItem.index] + ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\tdefaults.pie = helpers.clone(defaults.doughnut);\n\t\thelpers.extend(defaults.pie, {\n\t\t\tcutoutPercentage: 0\n\t\t});\n\t\n\t\n\t\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\t\n\t\t\tdataElementType: Chart.elements.Arc,\n\t\n\t\t\tlinkScales: helpers.noop,\n\t\n\t\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\t\tgetRingIndex: function(datasetIndex) {\n\t\t\t\tvar ringIndex = 0;\n\t\n\t\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t\t++ringIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn ringIndex;\n\t\t\t},\n\t\n\t\t\tupdate: function(reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar chart = me.chart,\n\t\t\t\t\tchartArea = chart.chartArea,\n\t\t\t\t\topts = chart.options,\n\t\t\t\t\tarcOpts = opts.elements.arc,\n\t\t\t\t\tavailableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth,\n\t\t\t\t\tavailableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth,\n\t\t\t\t\tminSize = Math.min(availableWidth, availableHeight),\n\t\t\t\t\toffset = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0\n\t\t\t\t\t},\n\t\t\t\t\tmeta = me.getMeta(),\n\t\t\t\t\tcutoutPercentage = opts.cutoutPercentage,\n\t\t\t\t\tcircumference = opts.circumference;\n\t\n\t\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\t\tvar contains0 = (startAngle <= 0 && 0 <= endAngle) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t\t}\n\t chart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\n\t\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 1, 0);\n\t\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\t\n\t\t\t\tmeta.total = me.calculateTotal();\n\t\n\t\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\n\t\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tupdateElement: function(arc, index, reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar chart = me.chart,\n\t\t\t\t\tchartArea = chart.chartArea,\n\t\t\t\t\topts = chart.options,\n\t\t\t\t\tanimationOpts = opts.animation,\n\t\t\t\t\tcenterX = (chartArea.left + chartArea.right) / 2,\n\t\t\t\t\tcenterY = (chartArea.top + chartArea.bottom) / 2,\n\t\t\t\t\tstartAngle = opts.rotation, // non reset case handled later\n\t\t\t\t\tendAngle = opts.rotation, // non reset case handled later\n\t\t\t\t\tdataset = me.getDataset(),\n\t\t\t\t\tcircumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)),\n\t\t\t\t\tinnerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius,\n\t\t\t\t\touterRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius,\n\t\t\t\t\tvalueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\n\t\t\t\thelpers.extend(arc, {\n\t\t\t\t\t// Utility\n\t\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t\t_index: index,\n\t\n\t\t\t\t\t// Desired view properties\n\t\t\t\t\t_model: {\n\t\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tvar model = arc._model;\n\t\t\t\t// Resets the visual styles\n\t\t\t\tthis.removeHoverStyle(arc);\n\t\n\t\t\t\t// Set correct angles if not resetting\n\t\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t\t}\n\t\n\t\t\t\tarc.pivot();\n\t\t\t},\n\t\n\t\t\tremoveHoverStyle: function(arc) {\n\t\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t\t},\n\t\n\t\t\tcalculateTotal: function() {\n\t\t\t\tvar dataset = this.getDataset();\n\t\t\t\tvar meta = this.getMeta();\n\t\t\t\tvar total = 0;\n\t\t\t\tvar value;\n\t\n\t\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\t\tvalue = dataset.data[index];\n\t\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\t/*if (total === 0) {\n\t\t\t\t\ttotal = NaN;\n\t\t\t\t}*/\n\t\n\t\t\t\treturn total;\n\t\t\t},\n\t\n\t\t\tcalculateCircumference: function(value) {\n\t\t\t\tvar total = this.getMeta().total;\n\t\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\t\treturn (Math.PI * 2.0) * (value / total);\n\t\t\t\t} else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t//gets the max border or hover width to properly scale pie charts\n\t getMaxBorderWidth: function (elements) {\n\t var max = 0,\n\t\t\t\t\tindex = this.index,\n\t\t\t\t\tlength = elements.length,\n\t\t\t\t\tborderWidth,\n\t\t\t\t\thoverWidth;\n\t\n\t for (var i = 0; i < length; i++) {\n\t \tborderWidth = elements[i]._model ? elements[i]._model.borderWidth : 0;\n\t hoverWidth = elements[i]._chart ? elements[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\t\t\t\t\t\n\t max = borderWidth > max ? borderWidth : max;\n\t max = hoverWidth > max ? hoverWidth : max;\n\t }\n\t return max;\n\t }\n\t\t});\n\t};\n\n\n/***/ },\n/* 203 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar helpers = Chart.helpers;\n\t\n\t\tChart.defaults.line = {\n\t\t\tshowLines: true,\n\t\t\tspanGaps: false,\n\t\n\t\t\thover: {\n\t\t\t\tmode: \"label\"\n\t\t\t},\n\t\n\t\t\tscales: {\n\t\t\t\txAxes: [{\n\t\t\t\t\ttype: \"category\",\n\t\t\t\t\tid: 'x-axis-0'\n\t\t\t\t}],\n\t\t\t\tyAxes: [{\n\t\t\t\t\ttype: \"linear\",\n\t\t\t\t\tid: 'y-axis-0'\n\t\t\t\t}]\n\t\t\t}\n\t\t};\n\t\n\t\tfunction lineEnabled(dataset, options) {\n\t\t\treturn helpers.getValueOrDefault(dataset.showLine, options.showLines);\n\t\t}\n\t\n\t\tChart.controllers.line = Chart.DatasetController.extend({\n\t\n\t\t\tdatasetElementType: Chart.elements.Line,\n\t\n\t\t\tdataElementType: Chart.elements.Point,\n\t\n\t\t\taddElementAndReset: function(index) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar options = me.chart.options;\n\t\t\t\tvar meta = me.getMeta();\n\t\n\t\t\t\tChart.DatasetController.prototype.addElementAndReset.call(me, index);\n\t\n\t\t\t\t// Make sure bezier control points are updated\n\t\t\t\tif (lineEnabled(me.getDataset(), options) && meta.dataset._model.tension !== 0) {\n\t\t\t\t\tme.updateBezierControlPoints();\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tupdate: function(reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar line = meta.dataset;\n\t\t\t\tvar points = meta.data || [];\n\t\t\t\tvar options = me.chart.options;\n\t\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\t\tvar i, ilen, custom;\n\t\t\t\tvar dataset = me.getDataset();\n\t\t\t\tvar showLine = lineEnabled(dataset, options);\n\t\n\t\t\t\t// Update Line\n\t\t\t\tif (showLine) {\n\t\t\t\t\tcustom = line.custom || {};\n\t\n\t\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Utility\n\t\t\t\t\tline._scale = scale;\n\t\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t\t// Data\n\t\t\t\t\tline._children = points;\n\t\t\t\t\t// Model\n\t\t\t\t\tline._model = {\n\t\t\t\t\t\t// Appearance\n\t\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t\t// This option gives linse the ability to span gaps\n\t\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.getValueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.getValueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t\t\t// Scale\n\t\t\t\t\t\tscaleTop: scale.top,\n\t\t\t\t\t\tscaleBottom: scale.bottom,\n\t\t\t\t\t\tscaleZero: scale.getBasePixel()\n\t\t\t\t\t};\n\t\n\t\t\t\t\tline.pivot();\n\t\t\t\t}\n\t\n\t\t\t\t// Update Points\n\t\t\t\tfor (i=0, ilen=points.length; i');\n\t\n\t\t\t\tvar data = chart.data;\n\t\t\t\tvar datasets = data.datasets;\n\t\t\t\tvar labels = data.labels;\n\t\n\t\t\t\tif (datasets.length) {\n\t\t\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\t\t\ttext.push('
  • ');\n\t\t\t\t\t\tif (labels[i]) {\n\t\t\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext.push('
  • ');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\ttext.push('');\n\t\t\t\treturn text.join(\"\");\n\t\t\t},\n\t\t\tlegend: {\n\t\t\t\tlabels: {\n\t\t\t\t\tgenerateLabels: function(chart) {\n\t\t\t\t\t\tvar data = chart.data;\n\t\t\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\t\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\t\n\t\t\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn [];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\n\t\t\t\tonClick: function(e, legendItem) {\n\t\t\t\t\tvar index = legendItem.index;\n\t\t\t\t\tvar chart = this.chart;\n\t\t\t\t\tvar i, ilen, meta;\n\t\n\t\t\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tchart.update();\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// Need to override these to give a nice default\n\t\t\ttooltips: {\n\t\t\t\tcallbacks: {\n\t\t\t\t\ttitle: function() {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t},\n\t\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\t\treturn data.labels[tooltipItem.index] + ': ' + tooltipItem.yLabel;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\t\n\t\t\tdataElementType: Chart.elements.Arc,\n\t\n\t\t\tlinkScales: helpers.noop,\n\t\n\t\t\tupdate: function(reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar chart = me.chart;\n\t\t\t\tvar chartArea = chart.chartArea;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar opts = chart.options;\n\t\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\t\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\n\t\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\n\t\t\t\tmeta.count = me.countVisibleElements();\n\t\n\t\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tupdateElement: function(arc, index, reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar chart = me.chart;\n\t\t\t\tvar dataset = me.getDataset();\n\t\t\t\tvar opts = chart.options;\n\t\t\t\tvar animationOpts = opts.animation;\n\t\t\t\tvar scale = chart.scale;\n\t\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\t\tvar labels = chart.data.labels;\n\t\n\t\t\t\tvar circumference = me.calculateCircumference(dataset.data[index]);\n\t\t\t\tvar centerX = scale.xCenter;\n\t\t\t\tvar centerY = scale.yCenter;\n\t\n\t\t\t\t// If there is NaN data before us, we need to calculate the starting angle correctly.\n\t\t\t\t// We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data\n\t\t\t\tvar visibleCount = 0;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tfor (var i = 0; i < index; ++i) {\n\t\t\t\t\tif (!isNaN(dataset.data[i]) && !meta.data[i].hidden) {\n\t\t\t\t\t\t++visibleCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t//var negHalfPI = -0.5 * Math.PI;\n\t\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\t\tvar startAngle = datasetStartAngle + (circumference * visibleCount);\n\t\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : circumference);\n\t\n\t\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\n\t\t\t\thelpers.extend(arc, {\n\t\t\t\t\t// Utility\n\t\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t\t_index: index,\n\t\t\t\t\t_scale: scale,\n\t\n\t\t\t\t\t// Desired view properties\n\t\t\t\t\t_model: {\n\t\t\t\t\t\tx: centerX,\n\t\t\t\t\t\ty: centerY,\n\t\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\t\tlabel: getValueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\t// Apply border and fill style\n\t\t\t\tme.removeHoverStyle(arc);\n\t\n\t\t\t\tarc.pivot();\n\t\t\t},\n\t\n\t\t\tremoveHoverStyle: function(arc) {\n\t\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t\t},\n\t\n\t\t\tcountVisibleElements: function() {\n\t\t\t\tvar dataset = this.getDataset();\n\t\t\t\tvar meta = this.getMeta();\n\t\t\t\tvar count = 0;\n\t\n\t\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\treturn count;\n\t\t\t},\n\t\n\t\t\tcalculateCircumference: function(value) {\n\t\t\t\tvar count = this.getMeta().count;\n\t\t\t\tif (count > 0 && !isNaN(value)) {\n\t\t\t\t\treturn (2 * Math.PI) / count;\n\t\t\t\t} else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\n/***/ },\n/* 205 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar helpers = Chart.helpers;\n\t\n\t\tChart.defaults.radar = {\n\t\t\tscale: {\n\t\t\t\ttype: \"radialLinear\"\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tline: {\n\t\t\t\t\ttension: 0 // no bezier in radar\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\tChart.controllers.radar = Chart.DatasetController.extend({\n\t\n\t\t\tdatasetElementType: Chart.elements.Line,\n\t\n\t\t\tdataElementType: Chart.elements.Point,\n\t\n\t\t\tlinkScales: helpers.noop,\n\t\n\t\t\taddElementAndReset: function(index) {\n\t\t\t\tChart.DatasetController.prototype.addElementAndReset.call(this, index);\n\t\n\t\t\t\t// Make sure bezier control points are updated\n\t\t\t\tthis.updateBezierControlPoints();\n\t\t\t},\n\t\n\t\t\tupdate: function(reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar meta = me.getMeta();\n\t\t\t\tvar line = meta.dataset;\n\t\t\t\tvar points = meta.data;\n\t\t\t\tvar custom = line.custom || {};\n\t\t\t\tvar dataset = me.getDataset();\n\t\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\t\tvar scale = me.chart.scale;\n\t\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\t\n\t\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t\t// Utility\n\t\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t\t// Data\n\t\t\t\t\t_children: points,\n\t\t\t\t\t_loop: true,\n\t\t\t\t\t// Model\n\t\t\t\t\t_model: {\n\t\t\t\t\t\t// Appearance\n\t\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\n\t\t\t\t\t\t// Scale\n\t\t\t\t\t\tscaleTop: scale.top,\n\t\t\t\t\t\tscaleBottom: scale.bottom,\n\t\t\t\t\t\tscaleZero: scale.getBasePosition()\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tmeta.dataset.pivot();\n\t\n\t\t\t\t// Update Points\n\t\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t\t}, me);\n\t\n\t\n\t\t\t\t// Update bezier control points\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t},\n\t\t\tupdateElement: function(point, index, reset) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar custom = point.custom || {};\n\t\t\t\tvar dataset = me.getDataset();\n\t\t\t\tvar scale = me.chart.scale;\n\t\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\t\n\t\t\t\thelpers.extend(point, {\n\t\t\t\t\t// Utility\n\t\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t\t_index: index,\n\t\t\t\t\t_scale: scale,\n\t\n\t\t\t\t\t// Desired view properties\n\t\t\t\t\t_model: {\n\t\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\t\n\t\t\t\t\t\t// Appearance\n\t\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.tension, me.chart.options.elements.line.tension),\n\t\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.getValueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\n\t\t\t\t\t\t// Tooltip\n\t\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t\t},\n\t\t\tupdateBezierControlPoints: function() {\n\t\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\t\tvar meta = this.getMeta();\n\t\n\t\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\t\tvar model = point._model;\n\t\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\t\tmodel.tension\n\t\t\t\t\t);\n\t\n\t\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\t\n\t\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\t\n\t\t\t\t\t// Now pivot the point for animation\n\t\t\t\t\tpoint.pivot();\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tdraw: function(ease) {\n\t\t\t\tvar meta = this.getMeta();\n\t\t\t\tvar easingDecimal = ease || 1;\n\t\n\t\t\t\t// Transition Point Locations\n\t\t\t\thelpers.each(meta.data, function(point) {\n\t\t\t\t\tpoint.transition(easingDecimal);\n\t\t\t\t});\n\t\n\t\t\t\t// Transition and Draw the line\n\t\t\t\tmeta.dataset.transition(easingDecimal).draw();\n\t\n\t\t\t\t// Draw the points\n\t\t\t\thelpers.each(meta.data, function(point) {\n\t\t\t\t\tpoint.draw();\n\t\t\t\t});\n\t\t\t},\n\t\n\t\t\tsetHoverStyle: function(point) {\n\t\t\t\t// Point\n\t\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\t\tvar custom = point.custom || {};\n\t\t\t\tvar index = point._index;\n\t\t\t\tvar model = point._model;\n\t\n\t\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.getValueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\t},\n\t\n\t\t\tremoveHoverStyle: function(point) {\n\t\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\t\tvar custom = point.custom || {};\n\t\t\t\tvar index = point._index;\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar pointElementOptions = this.chart.options.elements.point;\n\t\n\t\t\t\tmodel.radius = custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.radius, index, pointElementOptions.radius);\n\t\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor);\n\t\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor);\n\t\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth);\n\t\t\t}\n\t\t});\n\t};\n\n\n/***/ },\n/* 206 */\n/***/ function(module, exports) {\n\n\t/*global window: false */\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar helpers = Chart.helpers;\n\t\n\t\tChart.defaults.global.animation = {\n\t\t\tduration: 1000,\n\t\t\teasing: \"easeOutQuart\",\n\t\t\tonProgress: helpers.noop,\n\t\t\tonComplete: helpers.noop\n\t\t};\n\t\n\t\tChart.Animation = Chart.Element.extend({\n\t\t\tcurrentStep: null, // the current animation step\n\t\t\tnumSteps: 60, // default number of steps\n\t\t\teasing: \"\", // the easing to use for this animation\n\t\t\trender: null, // render function used by the animation service\n\t\n\t\t\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\t\t\tonAnimationComplete: null // user specified callback to fire when the animation finishes\n\t\t});\n\t\n\t\tChart.animationService = {\n\t\t\tframeDuration: 17,\n\t\t\tanimations: [],\n\t\t\tdropFrames: 0,\n\t\t\trequest: null,\n\t\t\taddAnimation: function(chartInstance, animationObject, duration, lazy) {\n\t\t\t\tvar me = this;\n\t\n\t\t\t\tif (!lazy) {\n\t\t\t\t\tchartInstance.animating = true;\n\t\t\t\t}\n\t\n\t\t\t\tfor (var index = 0; index < me.animations.length; ++index) {\n\t\t\t\t\tif (me.animations[index].chartInstance === chartInstance) {\n\t\t\t\t\t\t// replacing an in progress animation\n\t\t\t\t\t\tme.animations[index].animationObject = animationObject;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\tme.animations.push({\n\t\t\t\t\tchartInstance: chartInstance,\n\t\t\t\t\tanimationObject: animationObject\n\t\t\t\t});\n\t\n\t\t\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\t\t\tif (me.animations.length === 1) {\n\t\t\t\t\tme.requestAnimationFrame();\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Cancel the animation for a given chart instance\n\t\t\tcancelAnimation: function(chartInstance) {\n\t\t\t\tvar index = helpers.findIndex(this.animations, function(animationWrapper) {\n\t\t\t\t\treturn animationWrapper.chartInstance === chartInstance;\n\t\t\t\t});\n\t\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tthis.animations.splice(index, 1);\n\t\t\t\t\tchartInstance.animating = false;\n\t\t\t\t}\n\t\t\t},\n\t\t\trequestAnimationFrame: function() {\n\t\t\t\tvar me = this;\n\t\t\t\tif (me.request === null) {\n\t\t\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\t\t\tme.request = null;\n\t\t\t\t\t\tme.startDigest();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tstartDigest: function() {\n\t\t\t\tvar me = this;\n\t\n\t\t\t\tvar startTime = Date.now();\n\t\t\t\tvar framesToDrop = 0;\n\t\n\t\t\t\tif (me.dropFrames > 1) {\n\t\t\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t\t\t}\n\t\n\t\t\t\tvar i = 0;\n\t\t\t\twhile (i < me.animations.length) {\n\t\t\t\t\tif (me.animations[i].animationObject.currentStep === null) {\n\t\t\t\t\t\tme.animations[i].animationObject.currentStep = 0;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tme.animations[i].animationObject.currentStep += 1 + framesToDrop;\n\t\n\t\t\t\t\tif (me.animations[i].animationObject.currentStep > me.animations[i].animationObject.numSteps) {\n\t\t\t\t\t\tme.animations[i].animationObject.currentStep = me.animations[i].animationObject.numSteps;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tme.animations[i].animationObject.render(me.animations[i].chartInstance, me.animations[i].animationObject);\n\t\t\t\t\tif (me.animations[i].animationObject.onAnimationProgress && me.animations[i].animationObject.onAnimationProgress.call) {\n\t\t\t\t\t\tme.animations[i].animationObject.onAnimationProgress.call(me.animations[i].chartInstance, me.animations[i]);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (me.animations[i].animationObject.currentStep === me.animations[i].animationObject.numSteps) {\n\t\t\t\t\t\tif (me.animations[i].animationObject.onAnimationComplete && me.animations[i].animationObject.onAnimationComplete.call) {\n\t\t\t\t\t\t\tme.animations[i].animationObject.onAnimationComplete.call(me.animations[i].chartInstance, me.animations[i]);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// executed the last frame. Remove the animation.\n\t\t\t\t\t\tme.animations[i].chartInstance.animating = false;\n\t\n\t\t\t\t\t\tme.animations.splice(i, 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\tvar endTime = Date.now();\n\t\t\t\tvar dropFrames = (endTime - startTime) / me.frameDuration;\n\t\n\t\t\t\tme.dropFrames += dropFrames;\n\t\n\t\t\t\t// Do we have more stuff to animate?\n\t\t\t\tif (me.animations.length > 0) {\n\t\t\t\t\tme.requestAnimationFrame();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n/***/ },\n/* 207 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\t// Global Chart canvas helpers object for drawing items to canvas\n\t\tvar helpers = Chart.canvasHelpers = {};\n\t\n\t\thelpers.drawPoint = function(ctx, pointStyle, radius, x, y) {\n\t\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\n\t\t\tif (typeof pointStyle === 'object') {\n\t\t\t\ttype = pointStyle.toString();\n\t\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\t\tctx.drawImage(pointStyle, x - pointStyle.width / 2, y - pointStyle.height / 2);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tswitch (pointStyle) {\n\t\t\t// Default includes circle\n\t\t\tdefault:\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(x, y, radius, 0, Math.PI * 2);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fill();\n\t\t\t\tbreak;\n\t\t\tcase 'triangle':\n\t\t\t\tctx.beginPath();\n\t\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\t\tctx.moveTo(x - edgeLength / 2, y + height / 3);\n\t\t\t\tctx.lineTo(x + edgeLength / 2, y + height / 3);\n\t\t\t\tctx.lineTo(x, y - 2 * height / 3);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fill();\n\t\t\t\tbreak;\n\t\t\tcase 'rect':\n\t\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.fillRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tctx.strokeRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tbreak;\n\t\t\tcase 'rectRot':\n\t\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(x - size, y);\n\t\t\t\tctx.lineTo(x, y + size);\n\t\t\t\tctx.lineTo(x + size, y);\n\t\t\t\tctx.lineTo(x, y - size);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fill();\n\t\t\t\tbreak;\n\t\t\tcase 'cross':\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(x, y + radius);\n\t\t\t\tctx.lineTo(x, y - radius);\n\t\t\t\tctx.moveTo(x - radius, y);\n\t\t\t\tctx.lineTo(x + radius, y);\n\t\t\t\tctx.closePath();\n\t\t\t\tbreak;\n\t\t\tcase 'crossRot':\n\t\t\t\tctx.beginPath();\n\t\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\t\tctx.closePath();\n\t\t\t\tbreak;\n\t\t\tcase 'star':\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(x, y + radius);\n\t\t\t\tctx.lineTo(x, y - radius);\n\t\t\t\tctx.moveTo(x - radius, y);\n\t\t\t\tctx.lineTo(x + radius, y);\n\t\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\t\tctx.closePath();\n\t\t\t\tbreak;\n\t\t\tcase 'line':\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(x - radius, y);\n\t\t\t\tctx.lineTo(x + radius, y);\n\t\t\t\tctx.closePath();\n\t\t\t\tbreak;\n\t\t\tcase 'dash':\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(x, y);\n\t\t\t\tctx.lineTo(x + radius, y);\n\t\t\t\tctx.closePath();\n\t\t\t\tbreak;\n\t\t\t}\n\t\n\t\t\tctx.stroke();\n\t\t};\n\t};\n\n/***/ },\n/* 208 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function(Chart) {\n\t\n\t\tvar helpers = Chart.helpers;\n\t\t//Create a dictionary of chart types, to allow for extension of existing types\n\t\tChart.types = {};\n\t\n\t\t//Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t\t//Destroy method on the chart will remove the instance of the chart from this reference.\n\t\tChart.instances = {};\n\t\n\t\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\t\tChart.controllers = {};\n\t\n\t\t/**\n\t\t * @class Chart.Controller\n\t\t * The main controller of a chart.\n\t\t */\n\t\tChart.Controller = function(instance) {\n\t\n\t\t\tthis.chart = instance;\n\t\t\tthis.config = instance.config;\n\t\t\tthis.options = this.config.options = helpers.configMerge(Chart.defaults.global, Chart.defaults[this.config.type], this.config.options || {});\n\t\t\tthis.id = helpers.uid();\n\t\n\t\t\tObject.defineProperty(this, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn this.config.data;\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\t//Add the chart instance to the global namespace\n\t\t\tChart.instances[this.id] = this;\n\t\n\t\t\tif (this.options.responsive) {\n\t\t\t\t// Silent resize before chart draws\n\t\t\t\tthis.resize(true);\n\t\t\t}\n\t\n\t\t\tthis.initialize();\n\t\n\t\t\treturn this;\n\t\t};\n\t\n\t\thelpers.extend(Chart.Controller.prototype, /** @lends Chart.Controller */ {\n\t\n\t\t\tinitialize: function() {\n\t\t\t\tvar me = this;\n\t\t\t\t// Before init plugin notification\n\t\t\t\tChart.plugins.notify('beforeInit', [me]);\n\t\n\t\t\t\tme.bindEvents();\n\t\n\t\t\t\t// Make sure controllers are built first so that each dataset is bound to an axis before the scales\n\t\t\t\t// are built\n\t\t\t\tme.ensureScalesHaveIDs();\n\t\t\t\tme.buildOrUpdateControllers();\n\t\t\t\tme.buildScales();\n\t\t\t\tme.updateLayout();\n\t\t\t\tme.resetElements();\n\t\t\t\tme.initToolTip();\n\t\t\t\tme.update();\n\t\n\t\t\t\t// After init plugin notification\n\t\t\t\tChart.plugins.notify('afterInit', [me]);\n\t\n\t\t\t\treturn me;\n\t\t\t},\n\t\n\t\t\tclear: function() {\n\t\t\t\thelpers.clear(this.chart);\n\t\t\t\treturn this;\n\t\t\t},\n\t\n\t\t\tstop: function() {\n\t\t\t\t// Stops any current animation loop occuring\n\t\t\t\tChart.animationService.cancelAnimation(this);\n\t\t\t\treturn this;\n\t\t\t},\n\t\n\t\t\tresize: function resize(silent) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar chart = me.chart;\n\t\t\t\tvar canvas = chart.canvas;\n\t\t\t\tvar newWidth = helpers.getMaximumWidth(canvas);\n\t\t\t\tvar aspectRatio = chart.aspectRatio;\n\t\t\t\tvar newHeight = (me.options.maintainAspectRatio && isNaN(aspectRatio) === false && isFinite(aspectRatio) && aspectRatio !== 0) ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas);\n\t\n\t\t\t\tvar sizeChanged = chart.width !== newWidth || chart.height !== newHeight;\n\t\n\t\t\t\tif (!sizeChanged) {\n\t\t\t\t\treturn me;\n\t\t\t\t}\n\t\n\t\t\t\tcanvas.width = chart.width = newWidth;\n\t\t\t\tcanvas.height = chart.height = newHeight;\n\t\n\t\t\t\thelpers.retinaScale(chart);\n\t\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = { width: newWidth, height: newHeight };\n\t\t\t\tChart.plugins.notify('resize', [me, newSize]);\n\t\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\t\n\t\t\t\tif (!silent) {\n\t\t\t\t\tme.stop();\n\t\t\t\t\tme.update(me.options.responsiveAnimationDuration);\n\t\t\t\t}\n\t\n\t\t\t\treturn me;\n\t\t\t},\n\t\n\t\t\tensureScalesHaveIDs: function() {\n\t\t\t\tvar options = this.options;\n\t\t\t\tvar scalesOptions = options.scales || {};\n\t\t\t\tvar scaleOptions = options.scale;\n\t\n\t\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t\t});\n\t\n\t\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t\t});\n\t\n\t\t\t\tif (scaleOptions) {\n\t\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t\t */\n\t\t\tbuildScales: function() {\n\t\t\t\tvar me = this;\n\t\t\t\tvar options = me.options;\n\t\t\t\tvar scales = me.scales = {};\n\t\t\t\tvar items = [];\n\t\n\t\t\t\tif (options.scales) {\n\t\t\t\t\titems = items.concat(\n\t\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\t\treturn { options: xAxisOptions, dtype: 'category' }; }),\n\t\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\t\treturn { options: yAxisOptions, dtype: 'linear' }; }));\n\t\t\t\t}\n\t\n\t\t\t\tif (options.scale) {\n\t\t\t\t\titems.push({ options: options.scale, dtype: 'radialLinear', isDefault: true });\n\t\t\t\t}\n\t\n\t\t\t\thelpers.each(items, function(item) {\n\t\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\t\tvar scaleType = helpers.getValueOrDefault(scaleOptions.type, item.dtype);\n\t\t\t\t\tvar scaleClass = Chart.scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar scale = new scaleClass({\n\t\t\t\t\t\tid: scaleOptions.id,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.chart.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\n\t\t\t\t\tscales[scale.id] = scale;\n\t\n\t\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\t\tif (item.isDefault) {\n\t\t\t\t\t\tme.scale = scale;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\tChart.scaleService.addScalesToLayout(this);\n\t\t\t},\n\t\n\t\t\tupdateLayout: function() {\n\t\t\t\tChart.layoutService.update(this, this.chart.width, this.chart.height);\n\t\t\t},\n\t\n\t\t\tbuildOrUpdateControllers: function() {\n\t\t\t\tvar me = this;\n\t\t\t\tvar types = [];\n\t\t\t\tvar newControllers = [];\n\t\n\t\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (!meta.type) {\n\t\t\t\t\t\tmeta.type = dataset.type || me.config.type;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ttypes.push(meta.type);\n\t\n\t\t\t\t\tif (meta.controller) {\n\t\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmeta.controller = new Chart.controllers[meta.type](me, datasetIndex);\n\t\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t\t}\n\t\t\t\t}, me);\n\t\n\t\t\t\tif (types.length > 1) {\n\t\t\t\t\tfor (var i = 1; i < types.length; i++) {\n\t\t\t\t\t\tif (types[i] !== types[i - 1]) {\n\t\t\t\t\t\t\tme.isCombo = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn newControllers;\n\t\t\t},\n\t\n\t\t\tresetElements: function() {\n\t\t\t\tvar me = this;\n\t\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t\t}, me);\n\t\t\t},\n\t\n\t\t\tupdate: function update(animationDuration, lazy) {\n\t\t\t\tvar me = this;\n\t\t\t\tChart.plugins.notify('beforeUpdate', [me]);\n\t\n\t\t\t\t// In case the entire data object changed\n\t\t\t\tme.tooltip._data = me.data;\n\t\n\t\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\t\n\t\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t\t}, me);\n\t\n\t\t\t\tChart.layoutService.update(me, me.chart.width, me.chart.height);\n\t\n\t\t\t\t// Apply changes to the dataets that require the scales to have been calculated i.e BorderColor chages\n\t\t\t\tChart.plugins.notify('afterScaleUpdate', [me]);\n\t\n\t\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\n\t\t\t\tme.updateDatasets();\n\t\n\t\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\t\tChart.plugins.notify('afterUpdate', [me]);\n\t\n\t\t\t\tme.render(animationDuration, lazy);\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * @method beforeDatasetsUpdate\n\t\t\t * @description Called before all datasets are updated. If a plugin returns false,\n\t\t\t * the datasets update will be cancelled until another chart update is triggered.\n\t\t\t * @param {Object} instance the chart instance being updated.\n\t\t\t * @returns {Boolean} false to cancel the datasets update.\n\t\t\t * @memberof Chart.PluginBase\n\t\t\t * @since version 2.1.5\n\t\t\t * @instance\n\t\t\t */\n\t\n\t\t\t/**\n\t\t\t * @method afterDatasetsUpdate\n\t\t\t * @description Called after all datasets have been updated. Note that this\n\t\t\t * extension will not be called if the datasets update has been cancelled.\n\t\t\t * @param {Object} instance the chart instance being updated.\n\t\t\t * @memberof Chart.PluginBase\n\t\t\t * @since version 2.1.5\n\t\t\t * @instance\n\t\t\t */\n\t\n\t\t\t/**\n\t\t\t * Updates all datasets unless a plugin returns false to the beforeDatasetsUpdate\n\t\t\t * extension, in which case no datasets will be updated and the afterDatasetsUpdate\n\t\t\t * notification will be skipped.\n\t\t\t * @protected\n\t\t\t * @instance\n\t\t\t */\n\t\t\tupdateDatasets: function() {\n\t\t\t\tvar me = this;\n\t\t\t\tvar i, ilen;\n\t\n\t\t\t\tif (Chart.plugins.notify('beforeDatasetsUpdate', [ me ])) {\n\t\t\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\t\t\tme.getDatasetMeta(i).controller.update();\n\t\t\t\t\t}\n\t\n\t\t\t\t\tChart.plugins.notify('afterDatasetsUpdate', [ me ]);\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\trender: function render(duration, lazy) {\n\t\t\t\tvar me = this;\n\t\t\t\tChart.plugins.notify('beforeRender', [me]);\n\t\n\t\t\t\tvar animationOptions = me.options.animation;\n\t\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\t\tvar animation = new Chart.Animation();\n\t\t\t\t\tanimation.numSteps = (duration || animationOptions.duration) / 16.66; //60 fps\n\t\t\t\t\tanimation.easing = animationOptions.easing;\n\t\n\t\t\t\t\t// render function\n\t\t\t\t\tanimation.render = function(chartInstance, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easingEffects[animationObject.easing];\n\t\t\t\t\t\tvar stepDecimal = animationObject.currentStep / animationObject.numSteps;\n\t\t\t\t\t\tvar easeDecimal = easingFunction(stepDecimal);\n\t\n\t\t\t\t\t\tchartInstance.draw(easeDecimal, stepDecimal, animationObject.currentStep);\n\t\t\t\t\t};\n\t\n\t\t\t\t\t// user events\n\t\t\t\t\tanimation.onAnimationProgress = animationOptions.onProgress;\n\t\t\t\t\tanimation.onAnimationComplete = animationOptions.onComplete;\n\t\n\t\t\t\t\tChart.animationService.addAnimation(me, animation, duration, lazy);\n\t\t\t\t} else {\n\t\t\t\t\tme.draw();\n\t\t\t\t\tif (animationOptions && animationOptions.onComplete && animationOptions.onComplete.call) {\n\t\t\t\t\t\tanimationOptions.onComplete.call(me);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn me;\n\t\t\t},\n\t\n\t\t\tdraw: function(ease) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar easingDecimal = ease || 1;\n\t\t\t\tme.clear();\n\t\n\t\t\t\tChart.plugins.notify('beforeDraw', [me, easingDecimal]);\n\t\n\t\t\t\t// Draw all the scales\n\t\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\t\tbox.draw(me.chartArea);\n\t\t\t\t}, me);\n\t\t\t\tif (me.scale) {\n\t\t\t\t\tme.scale.draw();\n\t\t\t\t}\n\t\n\t\t\t\tChart.plugins.notify('beforeDatasetsDraw', [me, easingDecimal]);\n\t\n\t\t\t\t// Draw each dataset via its respective controller (reversed to support proper line stacking)\n\t\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\t\tme.getDatasetMeta(datasetIndex).controller.draw(ease);\n\t\t\t\t\t}\n\t\t\t\t}, me, true);\n\t\n\t\t\t\tChart.plugins.notify('afterDatasetsDraw', [me, easingDecimal]);\n\t\n\t\t\t\t// Finally draw the tooltip\n\t\t\t\tme.tooltip.transition(easingDecimal).draw();\n\t\n\t\t\t\tChart.plugins.notify('afterDraw', [me, easingDecimal]);\n\t\t\t},\n\t\n\t\t\t// Get the single element that was clicked on\n\t\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\t\tgetElementAtEvent: function(e) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar eventPosition = helpers.getRelativePosition(e, me.chart);\n\t\t\t\tvar elementsArray = [];\n\t\n\t\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t\t\thelpers.each(meta.data, function(element) {\n\t\t\t\t\t\t\tif (element.inRange(eventPosition.x, eventPosition.y)) {\n\t\t\t\t\t\t\t\telementsArray.push(element);\n\t\t\t\t\t\t\t\treturn elementsArray;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\treturn elementsArray.slice(0, 1);\n\t\t\t},\n\t\n\t\t\tgetElementsAtEvent: function(e) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar eventPosition = helpers.getRelativePosition(e, me.chart);\n\t\t\t\tvar elementsArray = [];\n\t\n\t\t\t\tvar found = (function() {\n\t\t\t\t\tif (me.data.datasets) {\n\t\t\t\t\t\tfor (var i = 0; i < me.data.datasets.length; i++) {\n\t\t\t\t\t\t\tvar meta = me.getDatasetMeta(i);\n\t\t\t\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\t\t\t\tfor (var j = 0; j < meta.data.length; j++) {\n\t\t\t\t\t\t\t\t\tif (meta.data[j].inRange(eventPosition.x, eventPosition.y)) {\n\t\t\t\t\t\t\t\t\t\treturn meta.data[j];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}).call(me);\n\t\n\t\t\t\tif (!found) {\n\t\t\t\t\treturn elementsArray;\n\t\t\t\t}\n\t\n\t\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex),\n\t\t\t\t\t\t\telement = meta.data[found._index];\n\t\t\t\t\t\tif(element && !element._view.skip){\n\t\t\t\t\t\t\telementsArray.push(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, me);\n\t\n\t\t\t\treturn elementsArray;\n\t\t\t},\n\t\n\t\t\tgetElementsAtXAxis: function(e) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar eventPosition = helpers.getRelativePosition(e, me.chart);\n\t\t\t\tvar elementsArray = [];\n\t\n\t\t\t\tvar found = (function() {\n\t\t\t\t\tif (me.data.datasets) {\n\t\t\t\t\t\tfor (var i = 0; i < me.data.datasets.length; i++) {\n\t\t\t\t\t\t\tvar meta = me.getDatasetMeta(i);\n\t\t\t\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\t\t\t\tfor (var j = 0; j < meta.data.length; j++) {\n\t\t\t\t\t\t\t\t\tif (meta.data[j].inLabelRange(eventPosition.x, eventPosition.y)) {\n\t\t\t\t\t\t\t\t\t\treturn meta.data[j];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}).call(me);\n\t\n\t\t\t\tif (!found) {\n\t\t\t\t\treturn elementsArray;\n\t\t\t\t}\n\t\n\t\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t\t\tvar index = helpers.findIndex(meta.data, function (it) {\n\t\t\t\t\t\t\treturn found._model.x === it._model.x;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif(index !== -1 && !meta.data[index]._view.skip) {\n\t\t\t\t\t\t\telementsArray.push(meta.data[index]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, me);\n\t\n\t\t\t\treturn elementsArray;\n\t\t\t},\t\t\n\t\n\t\t\tgetElementsAtEventForMode: function(e, mode) {\n\t\t\t\tvar me = this;\n\t\t\t\tswitch (mode) {\n\t\t\t\tcase 'single':\n\t\t\t\t\treturn me.getElementAtEvent(e);\n\t\t\t\tcase 'label':\n\t\t\t\t\treturn me.getElementsAtEvent(e);\n\t\t\t\tcase 'dataset':\n\t\t\t\t\treturn me.getDatasetAtEvent(e);\n\t case 'x-axis':\n\t return me.getElementsAtXAxis(e);\n\t\t\t\tdefault:\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tgetDatasetAtEvent: function(e) {\n\t\t\t\tvar elementsArray = this.getElementAtEvent(e);\n\t\n\t\t\t\tif (elementsArray.length > 0) {\n\t\t\t\t\telementsArray = this.getDatasetMeta(elementsArray[0]._datasetIndex).data;\n\t\t\t\t}\n\t\n\t\t\t\treturn elementsArray;\n\t\t\t},\n\t\n\t\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\t\tvar me = this;\n\t\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\t\tif (!dataset._meta) {\n\t\t\t\t\tdataset._meta = {};\n\t\t\t\t}\n\t\n\t\t\t\tvar meta = dataset._meta[me.id];\n\t\t\t\tif (!meta) {\n\t\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t\t}\n\t\n\t\t\t\treturn meta;\n\t\t\t},\n\t\n\t\t\tgetVisibleDatasetCount: function() {\n\t\t\t\tvar count = 0;\n\t\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i