require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o>>0;if(len===0){return-1}var n=0;if(arguments.length>1){n=Number(arguments[1]);if(n!=n){n=0}else if(n!=0&&n!=Infinity&&n!=-Infinity){n=(n>0||-1)*Math.floor(Math.abs(n))}}if(n>=len){return-1}var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k-1;--i){cur=values[i];if(cur===val){return cur}if(cur>val||cur===0&&zeroIsLargest&&extent[1]>val){nextIdx=i;continue}break}return values[nextIdx]};later.array.nextInvalid=function(val,values,extent){var min=extent[0],max=extent[1],len=values.length,zeroVal=values[len-1]===0&&min!==0?max:0,next=val,i=values.indexOf(val),start=next;while(next===(values[i]||zeroVal)){next++;if(next>max){next=min}i++;if(i===len){i=0}if(next===start){return undefined}}return next};later.array.prev=function(val,values,extent){var cur,len=values.length,zeroIsLargest=extent[0]!==0,prevIdx=len-1;for(var i=0;ilater.D.extent(d)[1]?1:val;var month=later.date.nextRollover(d,val,later.D,later.M),DMax=later.D.extent(month)[1];val=val>DMax?1:val||DMax;return later.date.next(later.Y.val(month),later.M.val(month),val)},prev:function(d,val){var month=later.date.prevRollover(d,val,later.D,later.M),DMax=later.D.extent(month)[1];return later.date.prev(later.Y.val(month),later.M.val(month),val>DMax?DMax:val||DMax)}};later.dayOfWeekCount=later.dc={name:"day of week count",range:604800,val:function(d){return d.dc||(d.dc=Math.floor((later.D.val(d)-1)/7)+1)},isValid:function(d,val){return later.dc.val(d)===val||val===0&&later.D.val(d)>later.D.extent(d)[1]-7},extent:function(d){return d.dcExtent||(d.dcExtent=[1,Math.ceil(later.D.extent(d)[1]/7)])},start:function(d){return d.dcStart||(d.dcStart=later.date.next(later.Y.val(d),later.M.val(d),Math.max(1,(later.dc.val(d)-1)*7+1||1)))},end:function(d){return d.dcEnd||(d.dcEnd=later.date.prev(later.Y.val(d),later.M.val(d),Math.min(later.dc.val(d)*7,later.D.extent(d)[1])))},next:function(d,val){val=val>later.dc.extent(d)[1]?1:val;var month=later.date.nextRollover(d,val,later.dc,later.M),dcMax=later.dc.extent(month)[1];val=val>dcMax?1:val;var next=later.date.next(later.Y.val(month),later.M.val(month),val===0?later.D.extent(month)[1]-6:1+7*(val-1));if(next.getTime()<=d.getTime()){month=later.M.next(d,later.M.val(d)+1);return later.date.next(later.Y.val(month),later.M.val(month),val===0?later.D.extent(month)[1]-6:1+7*(val-1))}return next},prev:function(d,val){var month=later.date.prevRollover(d,val,later.dc,later.M),dcMax=later.dc.extent(month)[1];val=val>dcMax?dcMax:val||dcMax;return later.dc.end(later.date.prev(later.Y.val(month),later.M.val(month),1+7*(val-1)))}};later.dayOfWeek=later.dw=later.d={name:"day of week",range:86400,val:function(d){return d.dw||(d.dw=later.date.getDay.call(d)+1)},isValid:function(d,val){return later.dw.val(d)===(val||7)},extent:function(){return[1,7]},start:function(d){return later.D.start(d)},end:function(d){return later.D.end(d)},next:function(d,val){val=val>7?1:val||7;return later.date.next(later.Y.val(d),later.M.val(d),later.D.val(d)+(val-later.dw.val(d))+(val<=later.dw.val(d)?7:0))},prev:function(d,val){val=val>7?7:val||7;return later.date.prev(later.Y.val(d),later.M.val(d),later.D.val(d)+(val-later.dw.val(d))+(val>=later.dw.val(d)?-7:0))}};later.dayOfYear=later.dy={name:"day of year",range:86400,val:function(d){return d.dy||(d.dy=Math.ceil(1+(later.D.start(d).getTime()-later.Y.start(d).getTime())/later.DAY))},isValid:function(d,val){return later.dy.val(d)===(val||later.dy.extent(d)[1])},extent:function(d){var year=later.Y.val(d);return d.dyExtent||(d.dyExtent=[1,year%4?365:366])},start:function(d){return later.D.start(d)},end:function(d){return later.D.end(d)},next:function(d,val){val=val>later.dy.extent(d)[1]?1:val;var year=later.date.nextRollover(d,val,later.dy,later.Y),dyMax=later.dy.extent(year)[1];val=val>dyMax?1:val||dyMax;return later.date.next(later.Y.val(year),later.M.val(year),val)},prev:function(d,val){var year=later.date.prevRollover(d,val,later.dy,later.Y),dyMax=later.dy.extent(year)[1];val=val>dyMax?dyMax:val||dyMax;return later.date.prev(later.Y.val(year),later.M.val(year),val)}};later.hour=later.h={name:"hour",range:3600,val:function(d){return d.h||(d.h=later.date.getHour.call(d))},isValid:function(d,val){return later.h.val(d)===val},extent:function(){return[0,23]},start:function(d){return d.hStart||(d.hStart=later.date.next(later.Y.val(d),later.M.val(d),later.D.val(d),later.h.val(d)))},end:function(d){return d.hEnd||(d.hEnd=later.date.prev(later.Y.val(d),later.M.val(d),later.D.val(d),later.h.val(d)))},next:function(d,val){val=val>23?0:val;var next=later.date.next(later.Y.val(d),later.M.val(d),later.D.val(d)+(val<=later.h.val(d)?1:0),val);if(!later.date.isUTC&&next.getTime()<=d.getTime()){next=later.date.next(later.Y.val(next),later.M.val(next),later.D.val(next),val+1)}return next},prev:function(d,val){val=val>23?23:val;return later.date.prev(later.Y.val(d),later.M.val(d),later.D.val(d)+(val>=later.h.val(d)?-1:0),val)}};later.minute=later.m={name:"minute",range:60,val:function(d){return d.m||(d.m=later.date.getMin.call(d))},isValid:function(d,val){return later.m.val(d)===val},extent:function(d){return[0,59]},start:function(d){return d.mStart||(d.mStart=later.date.next(later.Y.val(d),later.M.val(d),later.D.val(d),later.h.val(d),later.m.val(d)))},end:function(d){return d.mEnd||(d.mEnd=later.date.prev(later.Y.val(d),later.M.val(d),later.D.val(d),later.h.val(d),later.m.val(d)))},next:function(d,val){var m=later.m.val(d),s=later.s.val(d),inc=val>59?60-m:val<=m?60-m+val:val-m,next=new Date(d.getTime()+inc*later.MIN-s*later.SEC);if(!later.date.isUTC&&next.getTime()<=d.getTime()){next=new Date(d.getTime()+(inc+120)*later.MIN-s*later.SEC)}return next},prev:function(d,val){val=val>59?59:val;return later.date.prev(later.Y.val(d),later.M.val(d),later.D.val(d),later.h.val(d)+(val>=later.m.val(d)?-1:0),val)}};later.month=later.M={name:"month",range:2629740,val:function(d){return d.M||(d.M=later.date.getMonth.call(d)+1)},isValid:function(d,val){return later.M.val(d)===(val||12)},extent:function(){return[1,12]},start:function(d){return d.MStart||(d.MStart=later.date.next(later.Y.val(d),later.M.val(d)))},end:function(d){return d.MEnd||(d.MEnd=later.date.prev(later.Y.val(d),later.M.val(d)))},next:function(d,val){val=val>12?1:val||12;return later.date.next(later.Y.val(d)+(val>later.M.val(d)?0:1),val)},prev:function(d,val){val=val>12?12:val||12;return later.date.prev(later.Y.val(d)-(val>=later.M.val(d)?1:0),val)}};later.second=later.s={name:"second",range:1,val:function(d){return d.s||(d.s=later.date.getSec.call(d))},isValid:function(d,val){return later.s.val(d)===val},extent:function(){return[0,59]},start:function(d){return d},end:function(d){return d},next:function(d,val){var s=later.s.val(d),inc=val>59?60-s:val<=s?60-s+val:val-s,next=new Date(d.getTime()+inc*later.SEC);if(!later.date.isUTC&&next.getTime()<=d.getTime()){next=new Date(d.getTime()+(inc+7200)*later.SEC)}return next},prev:function(d,val,cache){val=val>59?59:val;return later.date.prev(later.Y.val(d),later.M.val(d),later.D.val(d),later.h.val(d),later.m.val(d)+(val>=later.s.val(d)?-1:0),val)}};later.time=later.t={name:"time",range:1,val:function(d){return d.t||(d.t=later.h.val(d)*3600+later.m.val(d)*60+later.s.val(d))},isValid:function(d,val){return later.t.val(d)===val},extent:function(){return[0,86399]},start:function(d){return d},end:function(d){return d},next:function(d,val){val=val>86399?0:val;var next=later.date.next(later.Y.val(d),later.M.val(d),later.D.val(d)+(val<=later.t.val(d)?1:0),0,0,val);if(!later.date.isUTC&&next.getTime()86399?86399:val;return later.date.next(later.Y.val(d),later.M.val(d),later.D.val(d)+(val>=later.t.val(d)?-1:0),0,0,val)}};later.weekOfMonth=later.wm={name:"week of month",range:604800,val:function(d){return d.wm||(d.wm=(later.D.val(d)+(later.dw.val(later.M.start(d))-1)+(7-later.dw.val(d)))/7)},isValid:function(d,val){return later.wm.val(d)===(val||later.wm.extent(d)[1])},extent:function(d){return d.wmExtent||(d.wmExtent=[1,(later.D.extent(d)[1]+(later.dw.val(later.M.start(d))-1)+(7-later.dw.val(later.M.end(d))))/7])},start:function(d){return d.wmStart||(d.wmStart=later.date.next(later.Y.val(d),later.M.val(d),Math.max(later.D.val(d)-later.dw.val(d)+1,1)))},end:function(d){return d.wmEnd||(d.wmEnd=later.date.prev(later.Y.val(d),later.M.val(d),Math.min(later.D.val(d)+(7-later.dw.val(d)),later.D.extent(d)[1])))},next:function(d,val){val=val>later.wm.extent(d)[1]?1:val;var month=later.date.nextRollover(d,val,later.wm,later.M),wmMax=later.wm.extent(month)[1];val=val>wmMax?1:val||wmMax;return later.date.next(later.Y.val(month),later.M.val(month),Math.max(1,(val-1)*7-(later.dw.val(month)-2)))},prev:function(d,val){var month=later.date.prevRollover(d,val,later.wm,later.M),wmMax=later.wm.extent(month)[1];val=val>wmMax?wmMax:val||wmMax;return later.wm.end(later.date.next(later.Y.val(month),later.M.val(month),Math.max(1,(val-1)*7-(later.dw.val(month)-2))))}};later.weekOfYear=later.wy={name:"week of year (ISO)",range:604800,val:function(d){if(d.wy)return d.wy;var wThur=later.dw.next(later.wy.start(d),5),YThur=later.dw.next(later.Y.prev(wThur,later.Y.val(wThur)-1),5);return d.wy=1+Math.ceil((wThur.getTime()-YThur.getTime())/later.WEEK)},isValid:function(d,val){return later.wy.val(d)===(val||later.wy.extent(d)[1])},extent:function(d){if(d.wyExtent)return d.wyExtent;var year=later.dw.next(later.wy.start(d),5),dwFirst=later.dw.val(later.Y.start(year)),dwLast=later.dw.val(later.Y.end(year));return d.wyExtent=[1,dwFirst===5||dwLast===5?53:52]},start:function(d){return d.wyStart||(d.wyStart=later.date.next(later.Y.val(d),later.M.val(d),later.D.val(d)-(later.dw.val(d)>1?later.dw.val(d)-2:6)))},end:function(d){return d.wyEnd||(d.wyEnd=later.date.prev(later.Y.val(d),later.M.val(d),later.D.val(d)+(later.dw.val(d)>1?8-later.dw.val(d):0)))},next:function(d,val){val=val>later.wy.extent(d)[1]?1:val;var wyThur=later.dw.next(later.wy.start(d),5),year=later.date.nextRollover(wyThur,val,later.wy,later.Y);if(later.wy.val(year)!==1){year=later.dw.next(year,2)}var wyMax=later.wy.extent(year)[1],wyStart=later.wy.start(year);val=val>wyMax?1:val||wyMax;return later.date.next(later.Y.val(wyStart),later.M.val(wyStart),later.D.val(wyStart)+7*(val-1))},prev:function(d,val){var wyThur=later.dw.next(later.wy.start(d),5),year=later.date.prevRollover(wyThur,val,later.wy,later.Y);if(later.wy.val(year)!==1){year=later.dw.next(year,2)}var wyMax=later.wy.extent(year)[1],wyEnd=later.wy.end(year);val=val>wyMax?wyMax:val||wyMax;return later.wy.end(later.date.next(later.Y.val(wyEnd),later.M.val(wyEnd),later.D.val(wyEnd)+7*(val-1)))}};later.year=later.Y={name:"year",range:31556900,val:function(d){return d.Y||(d.Y=later.date.getYear.call(d))},isValid:function(d,val){return later.Y.val(d)===val},extent:function(){return[1970,2099]},start:function(d){return d.YStart||(d.YStart=later.date.next(later.Y.val(d)))},end:function(d){return d.YEnd||(d.YEnd=later.date.prev(later.Y.val(d)))},next:function(d,val){return val>later.Y.val(d)&&val<=later.Y.extent()[1]?later.date.next(val):later.NEVER},prev:function(d,val){return val=later.Y.extent()[0]?later.date.prev(val):later.NEVER}};later.fullDate=later.fd={name:"full date",range:1,val:function(d){return d.fd||(d.fd=d.getTime())},isValid:function(d,val){return later.fd.val(d)===val},extent:function(){return[0,3250368e7]},start:function(d){return d},end:function(d){return d},next:function(d,val){return later.fd.val(d)val?new Date(val):later.NEVER}};later.modifier={};later.modifier.after=later.modifier.a=function(constraint,values){var value=values[0];return{name:"after "+constraint.name,range:(constraint.extent(new Date)[1]-value)*constraint.range,val:constraint.val,isValid:function(d,val){return this.val(d)>=value},extent:constraint.extent,start:constraint.start,end:constraint.end,next:function(startDate,val){if(val!=value)val=constraint.extent(startDate)[0];return constraint.next(startDate,val)},prev:function(startDate,val){val=val===value?constraint.extent(startDate)[1]:value-1;return constraint.prev(startDate,val)}}};later.modifier.before=later.modifier.b=function(constraint,values){var value=values[values.length-1];return{name:"before "+constraint.name,range:constraint.range*(value-1),val:constraint.val,isValid:function(d,val){return this.val(d)ra?1:0});tickConstraint=constraints[constraintsLen-1].constraint;function compareFn(dir){return dir==="next"?function(a,b){return a.getTime()>b.getTime()}:function(a,b){return b.getTime()>a.getTime()}}return{start:function(dir,startDate){var next=startDate,nextVal=later.array[dir],maxAttempts=1e3,done;while(maxAttempts--&&!done&&next){done=true;for(var i=0;i=0;i--){var constraint=constraints[i].constraint,curVal=constraint.val(startDate),extent=constraint.extent(startDate),newVal=nextVal(curVal,constraints[i].vals,extent),next;if(newVal!==undefined){next=constraint[dir](startDate,newVal);if(next&&(!result||compare(result,next))){result=next}}}return result},tick:function(dir,date){return new Date(dir==="next"?tickConstraint.end(date).getTime()+later.SEC:tickConstraint.start(date).getTime()-later.SEC)},tickStart:function(date){return tickConstraint.start(date)}}};later.schedule=function(sched){if(!sched)throw new Error("Missing schedule definition.");if(!sched.schedules)throw new Error("Definition must include at least one schedule.");var schedules=[],schedulesLen=sched.schedules.length,exceptions=[],exceptionsLen=sched.exceptions?sched.exceptions.length:0;for(var i=0;iresult){result=start}}}return result}function calcRangeOverlap(dir,rangesArr,startDate){var compare=compareFn(dir),result;for(var i=0,len=rangesArr.length;ib.getTime()}:function(a,b){return!a||b.getTime()>a.getTime()}}function findNext(arr,compare){var next=arr[0];for(var i=1,len=arr.length;imax?new Date(period.end(d).getTime()+later.SEC):period.start(d)};later.date.prev=function(Y,M,D,h,m,s){var len=arguments.length;M=len<2?11:M-1;D=len<3?later.D.extent(later.date.next(Y,M+1))[1]:D;h=len<4?23:h;m=len<5?59:m;s=len<6?59:s;return later.date.build(Y,M,D,h,m,s)};later.date.prevRollover=function(d,val,constraint,period){var cur=constraint.val(d);return val>=cur||!val?period.start(period.prev(d,period.val(d)-1)):period.start(d)};later.parse={};later.parse.cron=function(expr,hasSeconds){var NAMES={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12,SUN:1,MON:2,TUE:3,WED:4,THU:5,FRI:6,SAT:7};var FIELDS={s:[0,0,59],m:[1,0,59],h:[2,0,23],D:[3,1,31],M:[4,1,12],Y:[6,1970,2099],d:[5,1,7,1]};function getValue(value,offset){return isNaN(value)?NAMES[value]||null:+value+(offset||0)}function cloneSchedule(sched){var clone={},field;for(field in sched){if(field!=="dc"&&field!=="d"){clone[field]=sched[field].slice(0)}}return clone}function add(sched,name,min,max,inc){var i=min;if(!sched[name]){sched[name]=[]}while(i<=max){if(sched[name].indexOf(i)<0){sched[name].push(i)}i+=inc||1}}function addHash(schedules,curSched,value,hash){if(curSched.d&&!curSched.dc||curSched.dc&&curSched.dc.indexOf(hash)<0){schedules.push(cloneSchedule(curSched));curSched=schedules[schedules.length-1]}add(curSched,"d",value,value);add(curSched,"dc",hash,hash)}function addWeekday(s,curSched,value){var except1={},except2={};if(value===1){add(curSched,"D",1,3);add(curSched,"d",NAMES.MON,NAMES.FRI);add(except1,"D",2,2);add(except1,"d",NAMES.TUE,NAMES.FRI);add(except2,"D",3,3);add(except2,"d",NAMES.TUE,NAMES.FRI)}else{add(curSched,"D",value-1,value+1);add(curSched,"d",NAMES.MON,NAMES.FRI);add(except1,"D",value-1,value-1);add(except1,"d",NAMES.MON,NAMES.THU);add(except2,"D",value+1,value+1);add(except2,"d",NAMES.TUE,NAMES.FRI)}s.exceptions.push(except1);s.exceptions.push(except2)}function addRange(item,curSched,name,min,max,offset){var incSplit=item.split("/"),inc=+incSplit[1],range=incSplit[0];if(range!=="*"&&range!=="0"){var rangeSplit=range.split("-");min=getValue(rangeSplit[0],offset);max=getValue(rangeSplit[1],offset)||max}add(curSched,name,min,max,inc)}function parse(item,s,name,min,max,offset){var value,split,schedules=s.schedules,curSched=schedules[schedules.length-1];if(item==="L"){item=min-1}if((value=getValue(item,offset))!==null){add(curSched,name,value,value)}else if((value=getValue(item.replace("W",""),offset))!==null){addWeekday(s,curSched,value)}else if((value=getValue(item.replace("L",""),offset))!==null){addHash(schedules,curSched,value,min-1)}else if((split=item.split("#")).length===2){value=getValue(split[0],offset);addHash(schedules,curSched,value,getValue(split[1]))}else{addRange(item,curSched,name,min,max,offset)}}function isHash(item){return item.indexOf("#")>-1||item.indexOf("L")>0}function itemSorter(a,b){return isHash(a)&&!isHash(b)?1:0}function parseExpr(expr){if(expr==="* * * * * *"){expr="0/1 * * * * *"}var schedule={schedules:[{}],exceptions:[]},components=expr.split(" "),field,f,component,items;for(field in FIELDS){f=FIELDS[field];component=components[f[0]];if(component&&component!=="*"&&component!=="?"){items=component.split(",").sort(itemSorter);var i,length=items.length;for(i=0;ilen){len=m[0].length;token=t(start,start+len,curInput.substring(0,len),scanToken)}}if(token.type===whiteSpace){start=token.endPos}}return token}function scan(expectedToken){var token=peek(expectedToken); pos=token.endPos;return token}function parseThroughExpr(tokenType){var start=+parseTokenValue(tokenType),end=checkAndParse(TOKENTYPES.through)?+parseTokenValue(tokenType):start,nums=[];for(var i=start;i<=end;i++){nums.push(i)}return nums}function parseRanges(tokenType){var nums=parseThroughExpr(tokenType);while(checkAndParse(TOKENTYPES.and)){nums=nums.concat(parseThroughExpr(tokenType))}return nums}function parseEvery(r){var num,period,start,end;if(checkAndParse(TOKENTYPES.weekend)){r.on(NAMES.sun,NAMES.sat).dayOfWeek()}else if(checkAndParse(TOKENTYPES.weekday)){r.on(NAMES.mon,NAMES.tue,NAMES.wed,NAMES.thu,NAMES.fri).dayOfWeek()}else{num=parseTokenValue(TOKENTYPES.rank);r.every(num);period=parseTimePeriod(r);if(checkAndParse(TOKENTYPES.start)){num=parseTokenValue(TOKENTYPES.rank);r.startingOn(num);parseToken(period.type)}else if(checkAndParse(TOKENTYPES.between)){start=parseTokenValue(TOKENTYPES.rank);if(checkAndParse(TOKENTYPES.and)){end=parseTokenValue(TOKENTYPES.rank);r.between(start,end)}}}}function parseOnThe(r){if(checkAndParse(TOKENTYPES.first)){r.first()}else if(checkAndParse(TOKENTYPES.last)){r.last()}else{r.on(parseRanges(TOKENTYPES.rank))}parseTimePeriod(r)}function parseScheduleExpr(str){pos=0;input=str;error=-1;var r=recur();while(pos