Skip to content

Instantly share code, notes, and snippets.

@raysuelzer
Last active September 28, 2015 23:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raysuelzer/d38a14a9485427c1c7c5 to your computer and use it in GitHub Desktop.
Save raysuelzer/d38a14a9485427c1c7c5 to your computer and use it in GitHub Desktop.
requirebin sketch
// require() some stuff from npm (like you were using browserify)
// and then hit Run Code to run it on the right
var Benchmark = require('benchmark');
var Q = require('q');
var when = require('when');
var suite = new Benchmark.Suite;
// add tests
suite
//Q
.add('QTest', function() {
var d = Q.defer();
var code = 'q' + Math.random();
function eventFunc(e) {
if (e.data === code) {
window.removeEventListener('message', eventFunc);
d.resolve();
}
}
window.addEventListener('message', eventFunc);
d.promise.then(function() {
deferred.resolve()
});
window.postMessage(code, '*');
})
//RSVP
.add('RSVPTest', function() {
var d = Q.defer();
var code = 'q' + Math.random();
function eventFunc(e) {
if (e.data === code) {
window.removeEventListener('message', eventFunc);
d.resolve();
}
}
window.addEventListener('message', eventFunc);
d.promise.then(function() {
deferred.resolve()
});
window.postMessage(code, '*');
})
//WHEN
.add('whenTest', function() {
var d = when.defer();
var code = 'when' + Math.random();
function eventFunc(e) {
if (e.data === code) {
window.removeEventListener('message', eventFunc);
d.resolve();
}
}
window.addEventListener('message', eventFunc);
d.promise.then(function() {
deferred.resolve()
});
window.postMessage(code, '*');
})
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('Fastest is ' + this.filter('fastest').pluck('name'));
})
// run tests
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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canMutationObserver=typeof window!=="undefined"&&window.MutationObserver;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}var queue=[];if(canMutationObserver){var hiddenDiv=document.createElement("div");var observer=new MutationObserver(function(){var queueList=queue.slice();queue.length=0;queueList.forEach(function(fn){fn()})});observer.observe(hiddenDiv,{attributes:true});return function nextTick(fn){if(!queue.length){hiddenDiv.setAttribute("yes","no")}queue.push(fn)}}if(canPost){window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],benchmark:[function(require,module,exports){(function(process,global){(function(window,undefined){"use strict";var counter=0;var doc=isHostType(window,"document")&&document;var freeDefine=typeof define=="function"&&typeof define.amd=="object"&&define.amd&&define;var freeExports=typeof exports=="object"&&exports&&(typeof global=="object"&&global&&global==global.global&&(window=global),exports);var freeRequire=typeof require=="function"&&require;var getAllKeys=Object.getOwnPropertyNames;var getDescriptor=Object.getOwnPropertyDescriptor;var hasOwnProperty={}.hasOwnProperty;var isExtensible=Object.isExtensible||function(){return true};var microtimeObject=req("microtime");var perfObject=isHostType(window,"performance")&&performance;var perfName=perfObject&&(perfObject.now&&"now"||perfObject.webkitNow&&"webkitNow");var processObject=isHostType(window,"process")&&process;var propertyIsEnumerable={}.propertyIsEnumerable;var setDescriptor=Object.defineProperty;var toString={}.toString;var trash=doc&&doc.createElement("div");var uid="uid"+ +new Date;var calledBy={};var divisors={1:4096,2:512,3:64,4:8,5:0};var tTable={1:12.706,2:4.303,3:3.182,4:2.776,5:2.571,6:2.447,7:2.365,8:2.306,9:2.262,10:2.228,11:2.201,12:2.179,13:2.16,14:2.145,15:2.131,16:2.12,17:2.11,18:2.101,19:2.093,20:2.086,21:2.08,22:2.074,23:2.069,24:2.064,25:2.06,26:2.056,27:2.052,28:2.048,29:2.045,30:2.042,infinity:1.96};var uTable={5:[0,1,2],6:[1,2,3,5],7:[1,3,5,6,8],8:[2,4,6,8,10,13],9:[2,4,7,10,12,15,17],10:[3,5,8,11,14,17,20,23],11:[3,6,9,13,16,19,23,26,30],12:[4,7,11,14,18,22,26,29,33,37],13:[4,8,12,16,20,24,28,33,37,41,45],14:[5,9,13,17,22,26,31,36,40,45,50,55],15:[5,10,14,19,24,29,34,39,44,49,54,59,64],16:[6,11,15,21,26,31,37,42,47,53,59,64,70,75],17:[6,11,17,22,28,34,39,45,51,57,63,67,75,81,87],18:[7,12,18,24,30,36,42,48,55,61,67,74,80,86,93,99],19:[7,13,19,25,32,38,45,52,58,65,72,78,85,92,99,106,113],20:[8,14,20,27,34,41,48,55,62,69,76,83,90,98,105,112,119,127],21:[8,15,22,29,36,43,50,58,65,73,80,88,96,103,111,119,126,134,142],22:[9,16,23,30,38,45,53,61,69,77,85,93,101,109,117,125,133,141,150,158],23:[9,17,24,32,40,48,56,64,73,81,89,98,106,115,123,132,140,149,157,166,175],24:[10,17,25,33,42,50,59,67,76,85,94,102,111,120,129,138,147,156,165,174,183,192],25:[10,18,27,35,44,53,62,71,80,89,98,107,117,126,135,145,154,163,173,182,192,201,211],26:[11,19,28,37,46,55,64,74,83,93,102,112,122,132,141,151,161,171,181,191,200,210,220,230],27:[11,20,29,38,48,57,67,77,87,97,107,118,125,138,147,158,168,178,188,199,209,219,230,240,250],28:[12,21,30,40,50,60,70,80,90,101,111,122,132,143,154,164,175,186,196,207,218,228,239,250,261,272],29:[13,22,32,42,52,62,73,83,94,105,116,127,138,149,160,171,182,193,204,215,226,238,249,260,271,282,294],30:[13,23,33,43,54,65,76,87,98,109,120,131,143,154,166,177,189,200,212,223,235,247,258,270,282,293,305,317]};var support={};(function(){support.air=isClassOf(window.runtime,"ScriptBridgingProxyObject");support.argumentsClass=isClassOf(arguments,"Arguments");support.browser=doc&&isHostType(window,"navigator");support.charByIndex="x"[0]+Object("x")[0]=="xx";support.charByOwnIndex=support.charByIndex&&hasKey("x","0");support.java=isClassOf(window.java,"JavaPackage");support.timeout=isHostType(window,"setTimeout")&&isHostType(window,"clearTimeout");try{support.decompilation=Function("return ("+function(x){return{x:""+(1+x)+"",y:0}}+")")()(0).x==="1"}catch(e){support.decompilation=false}try{var o={};support.descriptors=(setDescriptor(o,o,o),"value"in getDescriptor(o,o))}catch(e){support.descriptors=false}try{support.getAllKeys=/\bvalueOf\b/.test(getAllKeys(Object.prototype))}catch(e){support.getAllKeys=false}support.iteratesOwnFirst=function(){var props=[];function ctor(){this.x=1}ctor.prototype={y:1};for(var prop in new ctor){props.push(prop)}return props[0]=="x"}();try{support.nodeClass=({toString:0}+"",toString.call(doc||0)!="[object Object]")}catch(e){support.nodeClass=true}})();var timer={ns:Date,start:null,stop:null};var noArgumentsClass=!support.argumentsClass,noCharByIndex=!support.charByIndex,noCharByOwnIndex=!support.charByOwnIndex;var abs=Math.abs,floor=Math.floor,max=Math.max,min=Math.min,pow=Math.pow,sqrt=Math.sqrt;function Benchmark(name,fn,options){var me=this;if(me==null||me.constructor!=Benchmark){return new Benchmark(name,fn,options)}if(isClassOf(name,"Object")){options=name}else if(isClassOf(name,"Function")){options=fn;fn=name}else if(isClassOf(fn,"Object")){options=fn;fn=null;me.name=name}else{me.name=name}setOptions(me,options);me.id||(me.id=++counter);me.fn==null&&(me.fn=fn);me.stats=deepClone(me.stats);me.times=deepClone(me.times)}function Deferred(clone){var me=this;if(me==null||me.constructor!=Deferred){return new Deferred(clone)}me.benchmark=clone;clock(me)}function Event(type){var me=this;return me==null||me.constructor!=Event?new Event(type):type instanceof Event?type:extend(me,{timeStamp:+new Date},typeof type=="string"?{type:type}:type)}function Suite(name,options){var me=this;if(me==null||me.constructor!=Suite){return new Suite(name,options)}if(isClassOf(name,"Object")){options=name}else{me.name=name}setOptions(me,options)}function concat(){var value,j=-1,length=arguments.length,result=slice.call(this),index=result.length;while(++j<length){value=arguments[j];if(isClassOf(value,"Array")){for(var k=0,l=value.length;k<l;k++,index++){if(k in value){result[index]=value[k]}}}else{result[index++]=value}}return result}function insert(start,deleteCount,elements){var deleteEnd=start+deleteCount,elementCount=elements?elements.length:0,index=start-1,length=start+elementCount,object=this,result=Array(deleteCount),tail=slice.call(object,deleteEnd);while(++index<deleteEnd){if(index in object){result[index-start]=object[index];delete object[index]}}index=start-1;while(++index<length){object[index]=elements[index-start]}start=index--;length=max(0,(object.length>>>0)-deleteCount+elementCount);while(++index<length){if(index-start in tail){object[index]=tail[index-start]}else if(index in object){delete object[index]}}deleteCount=deleteCount>elementCount?deleteCount-elementCount:0;while(deleteCount--){index=length+deleteCount;if(index in object){delete object[index]}}object.length=length;return result}function reverse(){var upperIndex,value,index=-1,object=Object(this),length=object.length>>>0,middle=floor(length/2);if(length>1){while(++index<middle){upperIndex=length-index-1;value=upperIndex in object?object[upperIndex]:uid;if(index in object){object[upperIndex]=object[index]}else{delete object[upperIndex]}if(value!=uid){object[index]=value}else{delete object[index]}}}return object}function shift(){return insert.call(this,0,1)[0]}function slice(start,end){var index=-1,object=Object(this),length=object.length>>>0,result=[];start=toInteger(start);start=start<0?max(length+start,0):min(start,length);start--;end=end==null?length:toInteger(end);end=end<0?max(length+end,0):min(end,length);while((++index,++start)<end){if(start in object){result[index]=object[start]}}return result}function splice(start,deleteCount){var object=Object(this),length=object.length>>>0;start=toInteger(start);start=start<0?max(length+start,0):min(start,length);deleteCount=arguments.length==1?length-start:min(max(toInteger(deleteCount),0),length-start);return insert.call(object,start,deleteCount,slice.call(arguments,2))}function toInteger(value){value=+value;return value===0||!isFinite(value)?value||0:value-value%1}function unshift(){var object=Object(this);insert.call(object,0,0,arguments);return object.length}function bind(fn,thisArg){return function(){fn.apply(thisArg,arguments)}}function createFunction(){createFunction=function(args,body){var result,anchor=freeDefine?define.amd:Benchmark,prop=uid+"createFunction";runScript((freeDefine?"define.amd.":"Benchmark.")+prop+"=function("+args+"){"+body+"}");result=anchor[prop];delete anchor[prop];return result};createFunction=support.browser&&(createFunction("",'return"'+uid+'"')||noop)()==uid?createFunction:Function;return createFunction.apply(null,arguments)}function delay(bench,fn){bench._timerId=setTimeout(fn,bench.delay*1e3)}function destroyElement(element){trash.appendChild(element);trash.innerHTML=""}function forProps(){var forShadowed,skipSeen,forArgs=true,shadowed=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];(function(enumFlag,key){function Klass(){this.valueOf=0}Klass.prototype.valueOf=0;for(key in new Klass){enumFlag+=key=="valueOf"?1:0}for(key in arguments){key=="0"&&(forArgs=false)}skipSeen=enumFlag==2;forShadowed=!enumFlag})(0);forProps=function(object,callback,options){options||(options={});var result=object;object=Object(object);var ctor,key,keys,skipCtor,done=!result,which=options.which,allFlag=which=="all",index=-1,iteratee=object,length=object.length,ownFlag=allFlag||which=="own",seen={},skipProto=isClassOf(object,"Function"),thisArg=options.bind;if(thisArg!==undefined){callback=bind(callback,thisArg)}if(allFlag&&support.getAllKeys){for(index=0,keys=getAllKeys(object),length=keys.length;index<length;index++){key=keys[index];if(callback(object[key],key,object)===false){break}}}else{for(key in object){if(done=!(skipProto&&key=="prototype")&&!(skipSeen&&(hasKey(seen,key)||!(seen[key]=true)))&&(!ownFlag||ownFlag&&hasKey(object,key))&&callback(object[key],key,object)===false){break}}if(!done&&(forArgs&&isArguments(object)||(noCharByIndex||noCharByOwnIndex)&&isClassOf(object,"String")&&(iteratee=noCharByIndex?object.split(""):object))){while(++index<length){if(done=callback(iteratee[index],String(index),object)===false){break}}}if(!done&&forShadowed){ctor=object.constructor;skipCtor=ctor&&ctor.prototype&&ctor.prototype.constructor===ctor;for(index=0;index<7;index++){key=shadowed[index];if(!(skipCtor&&key=="constructor")&&hasKey(object,key)&&callback(object[key],key,object)===false){break}}}}return result};return forProps.apply(null,arguments)}function getFirstArgument(fn){return!hasKey(fn,"toString")&&(/^[\s(]*function[^(]*\(([^\s,)]+)/.exec(fn)||0)[1]||""}function getMean(sample){return reduce(sample,function(sum,x){return sum+x})/sample.length||0}function getSource(fn,altSource){var result=altSource;if(isStringable(fn)){result=String(fn)}else if(support.decompilation){result=(/^[^{]+\{([\s\S]*)}\s*$/.exec(fn)||0)[1]}result=(result||"").replace(/^\s+|\s+$/g,"");return/^(?:\/\*+[\w|\W]*?\*\/|\/\/.*?[\n\r\u2028\u2029]|\s)*(["'])use strict\1;?$/.test(result)?"":result}function isArguments(){isArguments=function(value){return toString.call(value)=="[object Arguments]"};if(noArgumentsClass){isArguments=function(value){return hasKey(value,"callee")&&!(propertyIsEnumerable&&propertyIsEnumerable.call(value,"callee"))}}return isArguments(arguments[0])}function isClassOf(value,name){return value!=null&&toString.call(value)=="[object "+name+"]"}function isHostType(object,property){var type=object!=null?typeof object[property]:"number";return!/^(?:boolean|number|string|undefined)$/.test(type)&&(type=="object"?!!object[property]:true)}function isPlainObject(value){var result=false;if(!(value&&typeof value=="object")||noArgumentsClass&&isArguments(value)){return result}var ctor=value.constructor;if((support.nodeClass||!(typeof value.toString!="function"&&typeof(value+"")=="string"))&&(!isClassOf(ctor,"Function")||ctor instanceof ctor)){if(support.iteratesOwnFirst){forProps(value,function(subValue,subKey){result=subKey});return result===false||hasKey(value,result)}forProps(value,function(subValue,subKey){result=!hasKey(value,subKey);return false});return result===false}return result}function isStringable(value){return hasKey(value,"toString")||isClassOf(value,"String")}function methodize(fn){return function(){var args=[this];args.push.apply(args,arguments);return fn.apply(null,args)}}function noop(){}function req(id){try{var result=freeExports&&freeRequire(id)}catch(e){}return result||null}function runScript(code){var anchor=freeDefine?define.amd:Benchmark,script=doc.createElement("script"),sibling=doc.getElementsByTagName("script")[0],parent=sibling.parentNode,prop=uid+"runScript",prefix="("+(freeDefine?"define.amd.":"Benchmark.")+prop+"||function(){})();";try{script.appendChild(doc.createTextNode(prefix+code));anchor[prop]=function(){destroyElement(script)}}catch(e){parent=parent.cloneNode(false);sibling=null;script.text=code}parent.insertBefore(script,sibling);delete anchor[prop]}function setOptions(bench,options){options=extend({},bench.constructor.options,options);bench.options=forOwn(options,function(value,key){if(value!=null){if(/^on[A-Z]/.test(key)){forEach(key.split(" "),function(key){bench.on(key.slice(2).toLowerCase(),value)})}else if(!hasKey(bench,key)){bench[key]=deepClone(value)}}})}function resolve(){var me=this,clone=me.benchmark,bench=clone._original;if(bench.aborted){me.teardown();clone.running=false;cycle(me)}else if(++me.cycles<clone.count){if(support.timeout){setTimeout(function(){clone.compiled.call(me,timer)},0)}else{clone.compiled.call(me,timer)}}else{timer.stop(me);me.teardown();delay(clone,function(){cycle(me)})}}function deepClone(value){var accessor,circular,clone,ctor,descriptor,extensible,key,length,markerKey,parent,result,source,subIndex,data={value:value},index=0,marked=[],queue={length:0},unmarked=[];function Marker(object){this.raw=object}function forPropsCallback(subValue,subKey){if(subValue&&subValue.constructor==Marker){return}if(subValue===Object(subValue)){queue[queue.length++]={key:subKey,parent:clone,source:value}}else{try{clone[subKey]=subValue}catch(e){}}}function getMarkerKey(object){var result=uid;while(object[result]&&object[result].constructor!=Marker){result+=1}return result}do{key=data.key;parent=data.parent;source=data.source;clone=value=source?source[key]:data.value;accessor=circular=descriptor=false;if(value===Object(value)){if(isClassOf(value.deepClone,"Function")){clone=value.deepClone()}else{ctor=value.constructor;switch(toString.call(value)){case"[object Array]":clone=new ctor(value.length);break;case"[object Boolean]":clone=new ctor(value==true);break;case"[object Date]":clone=new ctor(+value);break;case"[object Object]":isPlainObject(value)&&(clone={});break;case"[object Number]":case"[object String]":clone=new ctor(value);break;case"[object RegExp]":clone=ctor(value.source,(value.global?"g":"")+(value.ignoreCase?"i":"")+(value.multiline?"m":""))}}if(clone&&clone!=value&&!(descriptor=source&&support.descriptors&&getDescriptor(source,key),accessor=descriptor&&(descriptor.get||descriptor.set))){if(extensible=isExtensible(value)){markerKey=getMarkerKey(value);if(value[markerKey]){circular=clone=value[markerKey].raw}}else{for(subIndex=0,length=unmarked.length;subIndex<length;subIndex++){data=unmarked[subIndex];if(data.object===value){circular=clone=data.clone;break}}}if(!circular){if(extensible){value[markerKey]=new Marker(clone);marked.push({key:markerKey,object:value})}else{unmarked.push({clone:clone,object:value})}forProps(value,forPropsCallback,{which:"all"})}}}if(parent){if(accessor||descriptor&&!(descriptor.configurable&&descriptor.enumerable&&descriptor.writable)){if("value"in descriptor){descriptor.value=clone}setDescriptor(parent,key,descriptor)}else{parent[key]=clone}}else{result=clone}}while(data=queue[index++]);for(index=0,length=marked.length;index<length;index++){data=marked[index];delete data.object[data.key]}return result}function each(object,callback,thisArg){var result=object;object=Object(object);var fn=callback,index=-1,length=object.length,isSnapshot=!!(object.snapshotItem&&(length=object.snapshotLength)),isSplittable=(noCharByIndex||noCharByOwnIndex)&&isClassOf(object,"String"),isConvertable=isSnapshot||isSplittable||"item"in object,origObject=object;if(length===length>>>0){if(isConvertable){callback=function(value,index){return fn.call(this,value,index,origObject)};if(isSplittable){object=object.split("")}else{object=[];while(++index<length){object[index]=isSnapshot?result.snapshotItem(index):result[index]}}}forEach(object,callback,thisArg)}else{forOwn(object,callback,thisArg)}return result}function extend(destination,source){var result=destination;delete arguments[0];forEach(arguments,function(source){forProps(source,function(value,key){result[key]=value})});return result}function filter(array,callback,thisArg){var result;if(callback=="successful"){callback=function(bench){return bench.cycles&&isFinite(bench.hz)}}else if(callback=="fastest"||callback=="slowest"){result=filter(array,"successful").sort(function(a,b){a=a.stats;b=b.stats;return(a.mean+a.moe>b.mean+b.moe?1:-1)*(callback=="fastest"?1:-1)});result=filter(result,function(bench){return result[0].compare(bench)==0})}return result||reduce(array,function(result,value,index){return callback.call(thisArg,value,index,array)?(result.push(value),result):result},[])}function forEach(array,callback,thisArg){var index=-1,length=(array=Object(array)).length>>>0;if(thisArg!==undefined){callback=bind(callback,thisArg)}while(++index<length){if(index in array&&callback(array[index],index,array)===false){break}}return array}function forOwn(object,callback,thisArg){return forProps(object,callback,{bind:thisArg,which:"own"})}function formatNumber(number){number=String(number).split(".");return number[0].replace(/(?=(?:\d{3})+$)(?!\b)/g,",")+(number[1]?"."+number[1]:"")}function hasKey(){hasKey=function(object,key){var parent=object!=null&&(object.constructor||Object).prototype;return!!parent&&key in Object(object)&&!(key in parent&&object[key]===parent[key])};if(isClassOf(hasOwnProperty,"Function")){hasKey=function(object,key){return object!=null&&hasOwnProperty.call(object,key)}}else if({}.__proto__==Object.prototype){hasKey=function(object,key){var result=false;if(object!=null){object=Object(object);object.__proto__=[object.__proto__,object.__proto__=null,result=key in object][0]}return result}}return hasKey.apply(this,arguments)}function indexOf(array,value,fromIndex){var index=toInteger(fromIndex),length=(array=Object(array)).length>>>0;index=(index<0?max(0,length+index):index)-1;while(++index<length){if(index in array&&value===array[index]){return index}}return-1}function interpolate(string,object){forOwn(object,function(value,key){string=string.replace(RegExp("#\\{"+key.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")+"\\}","g"),value)});return string}function invoke(benches,name){var args,bench,queued,index=-1,eventProps={currentTarget:benches},options={onStart:noop,onCycle:noop,onComplete:noop},result=map(benches,function(bench){return bench});function execute(){var listeners,async=isAsync(bench);if(async){bench.on("complete",getNext);listeners=bench.events.complete;listeners.splice(0,0,listeners.pop())}result[index]=isClassOf(bench&&bench[name],"Function")?bench[name].apply(bench,args):undefined;return!async&&getNext()}function getNext(event){var cycleEvent,last=bench,async=isAsync(last);if(async){last.off("complete",getNext);last.emit("complete")}eventProps.type="cycle";eventProps.target=last;cycleEvent=Event(eventProps);options.onCycle.call(benches,cycleEvent);if(!cycleEvent.aborted&&raiseIndex()!==false){bench=queued?benches[0]:result[index];if(isAsync(bench)){delay(bench,execute)}else if(async){while(execute()){}}else{return true}}else{eventProps.type="complete";options.onComplete.call(benches,Event(eventProps))}if(event){event.aborted=true}else{return false}}function isAsync(object){var async=args[0]&&args[0].async;return Object(object).constructor==Benchmark&&name=="run"&&((async==null?object.options.async:async)&&support.timeout||object.defer)}function raiseIndex(){var length=result.length;if(queued){do{++index>0&&shift.call(benches)}while((length=benches.length)&&!("0"in benches))}else{while(++index<length&&!(index in result)){}}return(queued?length:index<length)?index:index=false}if(isClassOf(name,"String")){args=slice.call(arguments,2)}else{options=extend(options,name);name=options.name;args=isClassOf(args="args"in options?options.args:[],"Array")?args:[args];queued=options.queued}if(raiseIndex()!==false){bench=result[index];eventProps.type="start";eventProps.target=bench;options.onStart.call(benches,Event(eventProps));if(benches.aborted&&benches.constructor==Suite&&name=="run"){eventProps.type="cycle";options.onCycle.call(benches,Event(eventProps));eventProps.type="complete";options.onComplete.call(benches,Event(eventProps))}else{if(isAsync(bench)){delay(bench,execute)}else{while(execute()){}}}}return result}function join(object,separator1,separator2){var result=[],length=(object=Object(object)).length,arrayLike=length===length>>>0;separator2||(separator2=": ");each(object,function(value,key){result.push(arrayLike?value:key+separator2+value)});return result.join(separator1||",")}function map(array,callback,thisArg){return reduce(array,function(result,value,index){result[index]=callback.call(thisArg,value,index,array);return result},Array(Object(array).length>>>0))}function pluck(array,property){return map(array,function(object){return object==null?undefined:object[property]})}function reduce(array,callback,accumulator){var noaccum=arguments.length<3;forEach(array,function(value,index){accumulator=noaccum?(noaccum=false,value):callback(accumulator,value,index,array)});return accumulator}function abortSuite(){var event,me=this,resetting=calledBy.resetSuite;if(me.running){event=Event("abort");me.emit(event);if(!event.cancelled||resetting){calledBy.abortSuite=true;me.reset();delete calledBy.abortSuite;if(!resetting){me.aborted=true;invoke(me,"abort")}}}return me}function add(name,fn,options){var me=this,bench=Benchmark(name,fn,options),event=Event({type:"add",target:bench});if(me.emit(event),!event.cancelled){me.push(bench)}return me}function cloneSuite(options){var me=this,result=new me.constructor(extend({},me.options,options));forOwn(me,function(value,key){if(!hasKey(result,key)){result[key]=value&&isClassOf(value.clone,"Function")?value.clone():deepClone(value)}});return result}function filterSuite(callback){var me=this,result=new me.constructor;result.push.apply(result,filter(me,callback));return result}function resetSuite(){var event,me=this,aborting=calledBy.abortSuite;if(me.running&&!aborting){calledBy.resetSuite=true;me.abort();delete calledBy.resetSuite}else if((me.aborted||me.running)&&(me.emit(event=Event("reset")),!event.cancelled)){me.running=false;if(!aborting){invoke(me,"reset")}}return me}function runSuite(options){var me=this;me.reset();me.running=true;options||(options={});invoke(me,{name:"run",args:options,queued:options.queued,onStart:function(event){me.emit(event)},onCycle:function(event){var bench=event.target;if(bench.error){me.emit({type:"error",target:bench})}me.emit(event);event.aborted=me.aborted},onComplete:function(event){me.running=false;me.emit(event)}});return me}function emit(type){var listeners,me=this,event=Event(type),events=me.events,args=(arguments[0]=event,arguments);event.currentTarget||(event.currentTarget=me);event.target||(event.target=me);delete event.result;if(events&&(listeners=hasKey(events,event.type)&&events[event.type])){forEach(listeners.slice(),function(listener){if((event.result=listener.apply(me,args))===false){event.cancelled=true}return!event.aborted})}return event.result}function listeners(type){var me=this,events=me.events||(me.events={});return hasKey(events,type)?events[type]:events[type]=[]}function off(type,listener){var me=this,events=me.events;events&&each(type?type.split(" "):events,function(listeners,type){var index;if(typeof listeners=="string"){type=listeners;listeners=hasKey(events,type)&&events[type]}if(listeners){if(listener){index=indexOf(listeners,listener);if(index>-1){listeners.splice(index,1)}}else{listeners.length=0}}});return me}function on(type,listener){var me=this,events=me.events||(me.events={});forEach(type.split(" "),function(type){(hasKey(events,type)?events[type]:events[type]=[]).push(listener)});return me}function abort(){var event,me=this,resetting=calledBy.reset;if(me.running){event=Event("abort");me.emit(event);if(!event.cancelled||resetting){calledBy.abort=true;me.reset();delete calledBy.abort;if(support.timeout){clearTimeout(me._timerId);delete me._timerId}if(!resetting){me.aborted=true;me.running=false}}}return me}function clone(options){var me=this,result=new me.constructor(extend({},me,options));result.options=extend({},me.options,options);forOwn(me,function(value,key){if(!hasKey(result,key)){result[key]=deepClone(value)}});return result}function compare(other){var critical,zStat,me=this,sample1=me.stats.sample,sample2=other.stats.sample,size1=sample1.length,size2=sample2.length,maxSize=max(size1,size2),minSize=min(size1,size2),u1=getU(sample1,sample2),u2=getU(sample2,sample1),u=min(u1,u2);function getScore(xA,sampleB){return reduce(sampleB,function(total,xB){return total+(xB>xA?0:xB<xA?1:.5)},0)}function getU(sampleA,sampleB){return reduce(sampleA,function(total,xA){return total+getScore(xA,sampleB)},0)}function getZ(u){return(u-size1*size2/2)/sqrt(size1*size2*(size1+size2+1)/12)}if(me==other){return 0}if(size1+size2>30){zStat=getZ(u);return abs(zStat)>1.96?zStat>0?-1:1:0}critical=maxSize<5||minSize<3?0:uTable[maxSize][minSize-3];return u<=critical?u==u1?1:-1:0}function reset(){var data,event,me=this,index=0,changes={length:0},queue={length:0};if(me.running&&!calledBy.abort){calledBy.reset=true;me.abort();delete calledBy.reset}else{data={destination:me,source:extend({},me.constructor.prototype,me.options)};do{forOwn(data.source,function(value,key){var changed,destination=data.destination,currValue=destination[key];if(value&&typeof value=="object"){if(isClassOf(value,"Array")){if(!isClassOf(currValue,"Array")){changed=currValue=[]}if(currValue.length!=value.length){changed=currValue=currValue.slice(0,value.length);currValue.length=value.length}}else if(!currValue||typeof currValue!="object"){changed=currValue={}}if(changed){changes[changes.length++]={destination:destination,key:key,value:currValue}}queue[queue.length++]={destination:currValue,source:value}}else if(value!==currValue&&!(value==null||isClassOf(value,"Function"))){changes[changes.length++]={destination:destination,key:key,value:value}}})}while(data=queue[index++]);if(changes.length&&(me.emit(event=Event("reset")),!event.cancelled)){forEach(changes,function(data){data.destination[data.key]=data.value})}}return me}function toStringBench(){var me=this,error=me.error,hz=me.hz,id=me.id,stats=me.stats,size=stats.sample.length,pm=support.java?"+/-":"±",result=me.name||(isNaN(id)?id:"<Test #"+id+">");if(error){result+=": "+join(error)}else{result+=" x "+formatNumber(hz.toFixed(hz<100?2:0))+" ops/sec "+pm+stats.rme.toFixed(2)+"% ("+size+" run"+(size==1?"":"s")+" sampled)"}return result}function clock(){var applet,options=Benchmark.options,template={begin:"s$=new n$",end:"r$=(new n$-s$)/1e3",uid:uid},timers=[{ns:timer.ns,res:max(.0015,getRes("ms")),unit:"ms"}];clock=function(clone){var deferred;if(clone instanceof Deferred){deferred=clone;clone=deferred.benchmark}var bench=clone._original,fn=bench.fn,fnArg=deferred?getFirstArgument(fn)||"deferred":"",stringable=isStringable(fn);var source={setup:getSource(bench.setup,preprocess("m$.setup()")),fn:getSource(fn,preprocess("m$.fn("+fnArg+")")),fnArg:fnArg,teardown:getSource(bench.teardown,preprocess("m$.teardown()"))};var count=bench.count=clone.count,decompilable=support.decompilation||stringable,id=bench.id,isEmpty=!(source.fn||stringable),name=bench.name||(typeof id=="number"?"<Test #"+id+">":id),ns=timer.ns,result=0;clone.minTime=bench.minTime||(bench.minTime=bench.options.minTime=options.minTime);if(applet){try{ns.nanoTime()}catch(e){ns=timer.ns=new applet.Packages.nano}}var compiled=bench.compiled=createFunction(preprocess("t$"),interpolate(preprocess(deferred?"var d$=this,#{fnArg}=d$,m$=d$.benchmark._original,f$=m$.fn,su$=m$.setup,td$=m$.teardown;"+"if(!d$.cycles){"+'d$.fn=function(){var #{fnArg}=d$;if(typeof f$=="function"){try{#{fn}\n}catch(e$){f$(d$)}}else{#{fn}\n}};'+'d$.teardown=function(){d$.cycles=0;if(typeof td$=="function"){try{#{teardown}\n}catch(e$){td$()}}else{#{teardown}\n}};'+'if(typeof su$=="function"){try{#{setup}\n}catch(e$){su$()}}else{#{setup}\n};'+"t$.start(d$);"+"}d$.fn();return{}":"var r$,s$,m$=this,f$=m$.fn,i$=m$.count,n$=t$.ns;#{setup}\n#{begin};"+'while(i$--){#{fn}\n}#{end};#{teardown}\nreturn{elapsed:r$,uid:"#{uid}"}'),source));try{if(isEmpty){throw new Error('The test "'+name+'" is empty. This may be the result of dead code removal.')}else if(!deferred){bench.count=1;compiled=(compiled.call(bench,timer)||{}).uid==uid&&compiled;bench.count=count}}catch(e){compiled=null;clone.error=e||new Error(String(e));bench.count=count}if(decompilable&&!compiled&&!deferred&&!isEmpty){compiled=createFunction(preprocess("t$"),interpolate(preprocess((clone.error&&!stringable?"var r$,s$,m$=this,f$=m$.fn,i$=m$.count":"function f$(){#{fn}\n}var r$,s$,m$=this,i$=m$.count")+",n$=t$.ns;#{setup}\n#{begin};m$.f$=f$;while(i$--){m$.f$()}#{end};"+"delete m$.f$;#{teardown}\nreturn{elapsed:r$}"),source));try{bench.count=1;compiled.call(bench,timer);bench.compiled=compiled;bench.count=count;delete clone.error}catch(e){bench.count=count;if(clone.error){compiled=null}else{bench.compiled=compiled;clone.error=e||new Error(String(e))}}}clone.compiled=compiled;if(!clone.error){result=compiled.call(deferred||bench,timer).elapsed}return result};function getRes(unit){var measured,begin,count=30,divisor=1e3,ns=timer.ns,sample=[];while(count--){if(unit=="us"){divisor=1e6;if(ns.stop){ns.start();while(!(measured=ns.microseconds())){}}else if(ns[perfName]){divisor=1e3;measured=Function("n","var r,s=n."+perfName+"();while(!(r=n."+perfName+"()-s)){};return r")(ns)}else{begin=ns();while(!(measured=ns()-begin)){}}}else if(unit=="ns"){divisor=1e9;if(ns.nanoTime){begin=ns.nanoTime();while(!(measured=ns.nanoTime()-begin)){}}else{begin=(begin=ns())[0]+begin[1]/divisor;while(!(measured=(measured=ns())[0]+measured[1]/divisor-begin)){}divisor=1}}else{begin=new ns;while(!(measured=new ns-begin)){}}if(measured>0){sample.push(measured)}else{sample.push(Infinity);break;
}}return getMean(sample)/divisor}function preprocess(code){return interpolate(code,template).replace(/\$/g,/\d+/.exec(uid))}each(doc&&doc.applets||[],function(element){return!(timer.ns=applet="nanoTime"in element&&element)});try{if(typeof timer.ns.nanoTime()=="number"){timers.push({ns:timer.ns,res:getRes("ns"),unit:"ns"})}}catch(e){}try{if(timer.ns=new(window.chrome||window.chromium).Interval){timers.push({ns:timer.ns,res:getRes("us"),unit:"us"})}}catch(e){}if(timer.ns=perfName&&perfObject){timers.push({ns:timer.ns,res:getRes("us"),unit:"us"})}if(processObject&&typeof(timer.ns=processObject.hrtime)=="function"){timers.push({ns:timer.ns,res:getRes("ns"),unit:"ns"})}if(microtimeObject&&typeof(timer.ns=microtimeObject.now)=="function"){timers.push({ns:timer.ns,res:getRes("us"),unit:"us"})}timer=reduce(timers,function(timer,other){return other.res<timer.res?other:timer});if(timer.unit!="ns"&&applet){applet=destroyElement(applet)}if(timer.res==Infinity){throw new Error("Benchmark.js was unable to find a working timer.")}if(timer.unit=="ns"){if(timer.ns.nanoTime){extend(template,{begin:"s$=n$.nanoTime()",end:"r$=(n$.nanoTime()-s$)/1e9"})}else{extend(template,{begin:"s$=n$()",end:"r$=n$(s$);r$=r$[0]+(r$[1]/1e9)"})}}else if(timer.unit=="us"){if(timer.ns.stop){extend(template,{begin:"s$=n$.start()",end:"r$=n$.microseconds()/1e6"})}else if(perfName){extend(template,{begin:"s$=n$."+perfName+"()",end:"r$=(n$."+perfName+"()-s$)/1e3"})}else{extend(template,{begin:"s$=n$()",end:"r$=(n$()-s$)/1e6"})}}timer.start=createFunction(preprocess("o$"),preprocess("var n$=this.ns,#{begin};o$.elapsed=0;o$.timeStamp=s$"));timer.stop=createFunction(preprocess("o$"),preprocess("var n$=this.ns,s$=o$.timeStamp,#{end};o$.elapsed=r$"));options.minTime||(options.minTime=max(timer.res/2/.01,.05));return clock.apply(null,arguments)}function compute(bench,options){options||(options={});var async=options.async,elapsed=0,initCount=bench.initCount,minSamples=bench.minSamples,queue=[],sample=bench.stats.sample;function enqueue(){queue.push(bench.clone({_original:bench,events:{abort:[update],cycle:[update],error:[update],start:[update]}}))}function update(event){var clone=this,type=event.type;if(bench.running){if(type=="start"){clone.count=bench.initCount}else{if(type=="error"){bench.error=clone.error}if(type=="abort"){bench.abort();bench.emit("cycle")}else{event.currentTarget=event.target=bench;bench.emit(event)}}}else if(bench.aborted){clone.events.abort.length=0;clone.abort()}}function evaluate(event){var critical,df,mean,moe,rme,sd,sem,variance,clone=event.target,done=bench.aborted,now=+new Date,size=sample.push(clone.times.period),maxedOut=size>=minSamples&&(elapsed+=now-clone.times.timeStamp)/1e3>bench.maxTime,times=bench.times,varOf=function(sum,x){return sum+pow(x-mean,2)};if(done||clone.hz==Infinity){maxedOut=!(size=sample.length=queue.length=0)}if(!done){mean=getMean(sample);variance=reduce(sample,varOf,0)/(size-1)||0;sd=sqrt(variance);sem=sd/sqrt(size);df=size-1;critical=tTable[Math.round(df)||1]||tTable.infinity;moe=sem*critical;rme=moe/mean*100||0;extend(bench.stats,{deviation:sd,mean:mean,moe:moe,rme:rme,sem:sem,variance:variance});if(maxedOut){bench.initCount=initCount;bench.running=false;done=true;times.elapsed=(now-times.timeStamp)/1e3}if(bench.hz!=Infinity){bench.hz=1/mean;times.cycle=mean*bench.count;times.period=mean}}if(queue.length<2&&!maxedOut){enqueue()}event.aborted=done}enqueue();invoke(queue,{name:"run",args:{async:async},queued:true,onCycle:evaluate,onComplete:function(){bench.emit("complete")}})}function cycle(clone,options){options||(options={});var deferred;if(clone instanceof Deferred){deferred=clone;clone=clone.benchmark}var clocked,cycles,divisor,event,minTime,period,async=options.async,bench=clone._original,count=clone.count,times=clone.times;if(clone.running){cycles=++clone.cycles;clocked=deferred?deferred.elapsed:clock(clone);minTime=clone.minTime;if(cycles>bench.cycles){bench.cycles=cycles}if(clone.error){event=Event("error");event.message=clone.error;clone.emit(event);if(!event.cancelled){clone.abort()}}}if(clone.running){bench.times.cycle=times.cycle=clocked;period=bench.times.period=times.period=clocked/count;bench.hz=clone.hz=1/period;bench.initCount=clone.initCount=count;clone.running=clocked<minTime;if(clone.running){if(!clocked&&(divisor=divisors[clone.cycles])!=null){count=floor(4e6/divisor)}if(count<=clone.count){count+=Math.ceil((minTime-clocked)/period)}clone.running=count!=Infinity}}event=Event("cycle");clone.emit(event);if(event.aborted){clone.abort()}if(clone.running){clone.count=count;if(deferred){clone.compiled.call(deferred,timer)}else if(async){delay(clone,function(){cycle(clone,options)})}else{cycle(clone)}}else{if(support.browser){runScript(uid+"=1;delete "+uid)}clone.emit("complete")}}function run(options){var me=this,event=Event("start");me.running=false;me.reset();me.running=true;me.count=me.initCount;me.times.timeStamp=+new Date;me.emit(event);if(!event.cancelled){options={async:((options=options&&options.async)==null?me.async:options)&&support.timeout};if(me._original){if(me.defer){Deferred(me)}else{cycle(me,options)}}else{compute(me,options)}}return me}extend(Benchmark,{options:{async:false,defer:false,delay:.005,id:undefined,initCount:1,maxTime:5,minSamples:5,minTime:0,name:undefined,onAbort:undefined,onComplete:undefined,onCycle:undefined,onError:undefined,onReset:undefined,onStart:undefined},platform:req("platform")||window.platform||{description:window.navigator&&navigator.userAgent||null,layout:null,product:null,name:null,manufacturer:null,os:null,prerelease:null,version:null,toString:function(){return this.description||""}},version:"1.0.0",support:support,deepClone:deepClone,each:each,extend:extend,filter:filter,forEach:forEach,forOwn:forOwn,formatNumber:formatNumber,hasKey:(hasKey(Benchmark,""),hasKey),indexOf:indexOf,interpolate:interpolate,invoke:invoke,join:join,map:map,pluck:pluck,reduce:reduce});extend(Benchmark.prototype,{count:0,cycles:0,hz:0,compiled:undefined,error:undefined,fn:undefined,aborted:false,running:false,setup:noop,teardown:noop,stats:{moe:0,rme:0,sem:0,deviation:0,mean:0,sample:[],variance:0},times:{cycle:0,elapsed:0,period:0,timeStamp:0},abort:abort,clone:clone,compare:compare,emit:emit,listeners:listeners,off:off,on:on,reset:reset,run:run,toString:toStringBench});extend(Deferred.prototype,{benchmark:null,cycles:0,elapsed:0,timeStamp:0,resolve:resolve});extend(Event.prototype,{aborted:false,cancelled:false,currentTarget:undefined,result:undefined,target:undefined,timeStamp:0,type:""});Suite.options={name:undefined};extend(Suite.prototype,{length:0,aborted:false,running:false,forEach:methodize(forEach),indexOf:methodize(indexOf),invoke:methodize(invoke),join:[].join,map:methodize(map),pluck:methodize(pluck),pop:[].pop,push:[].push,sort:[].sort,reduce:methodize(reduce),abort:abortSuite,add:add,clone:cloneSuite,emit:emit,filter:filterSuite,listeners:listeners,off:off,on:on,reset:resetSuite,run:runSuite,concat:concat,reverse:reverse,shift:shift,slice:slice,splice:splice,unshift:unshift});extend(Benchmark,{Deferred:Deferred,Event:Event,Suite:Suite});if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){define(function(){return Benchmark})}else if(freeExports){if(typeof module=="object"&&module&&module.exports==freeExports){(module.exports=Benchmark).Benchmark=Benchmark}else{freeExports.Benchmark=Benchmark}}else{window["Benchmark"]=Benchmark}if(support.air){clock({_original:{fn:noop,count:1,options:{}}})}})(this)}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{_process:1}]},{},[]);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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canMutationObserver=typeof window!=="undefined"&&window.MutationObserver;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}var queue=[];if(canMutationObserver){var hiddenDiv=document.createElement("div");var observer=new MutationObserver(function(){var queueList=queue.slice();queue.length=0;queueList.forEach(function(fn){fn()})});observer.observe(hiddenDiv,{attributes:true});return function nextTick(fn){if(!queue.length){hiddenDiv.setAttribute("yes","no")}queue.push(fn)}}if(canPost){window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],q:[function(require,module,exports){(function(process){(function(definition){"use strict";if(typeof bootstrap==="function"){bootstrap("promise",definition)}else if(typeof exports==="object"&&typeof module==="object"){module.exports=definition()}else if(typeof define==="function"&&define.amd){define(definition)}else if(typeof ses!=="undefined"){if(!ses.ok()){return}else{ses.makeQ=definition}}else if(typeof window!=="undefined"||typeof self!=="undefined"){var global=typeof window!=="undefined"?window:self;var previousQ=global.Q;global.Q=definition();global.Q.noConflict=function(){global.Q=previousQ;return this}}else{throw new Error("This environment was not anticipated by Q. Please file a bug.")}})(function(){"use strict";var hasStacks=false;try{throw new Error}catch(e){hasStacks=!!e.stack}var qStartingLine=captureLine();var qFileName;var noop=function(){};var nextTick=function(){var head={task:void 0,next:null};var tail=head;var flushing=false;var requestTick=void 0;var isNodeJS=false;var laterQueue=[];function flush(){var task,domain;while(head.next){head=head.next;task=head.task;head.task=void 0;domain=head.domain;if(domain){head.domain=void 0;domain.enter()}runSingle(task,domain)}while(laterQueue.length){task=laterQueue.pop();runSingle(task)}flushing=false}function runSingle(task,domain){try{task()}catch(e){if(isNodeJS){if(domain){domain.exit()}setTimeout(flush,0);if(domain){domain.enter()}throw e}else{setTimeout(function(){throw e},0)}}if(domain){domain.exit()}}nextTick=function(task){tail=tail.next={task:task,domain:isNodeJS&&process.domain,next:null};if(!flushing){flushing=true;requestTick()}};if(typeof process==="object"&&process.toString()==="[object process]"&&process.nextTick){isNodeJS=true;requestTick=function(){process.nextTick(flush)}}else if(typeof setImmediate==="function"){if(typeof window!=="undefined"){requestTick=setImmediate.bind(window,flush)}else{requestTick=function(){setImmediate(flush)}}}else if(typeof MessageChannel!=="undefined"){var channel=new MessageChannel;channel.port1.onmessage=function(){requestTick=requestPortTick;channel.port1.onmessage=flush;flush()};var requestPortTick=function(){channel.port2.postMessage(0)};requestTick=function(){setTimeout(flush,0);requestPortTick()}}else{requestTick=function(){setTimeout(flush,0)}}nextTick.runAfter=function(task){laterQueue.push(task);if(!flushing){flushing=true;requestTick()}};return nextTick}();var call=Function.call;function uncurryThis(f){return function(){return call.apply(f,arguments)}}var array_slice=uncurryThis(Array.prototype.slice);var array_reduce=uncurryThis(Array.prototype.reduce||function(callback,basis){var index=0,length=this.length;if(arguments.length===1){do{if(index in this){basis=this[index++];break}if(++index>=length){throw new TypeError}}while(1)}for(;index<length;index++){if(index in this){basis=callback(basis,this[index],index)}}return basis});var array_indexOf=uncurryThis(Array.prototype.indexOf||function(value){for(var i=0;i<this.length;i++){if(this[i]===value){return i}}return-1});var array_map=uncurryThis(Array.prototype.map||function(callback,thisp){var self=this;var collect=[];array_reduce(self,function(undefined,value,index){collect.push(callback.call(thisp,value,index,self))},void 0);return collect});var object_create=Object.create||function(prototype){function Type(){}Type.prototype=prototype;return new Type};var object_hasOwnProperty=uncurryThis(Object.prototype.hasOwnProperty);var object_keys=Object.keys||function(object){var keys=[];for(var key in object){if(object_hasOwnProperty(object,key)){keys.push(key)}}return keys};var object_toString=uncurryThis(Object.prototype.toString);function isObject(value){return value===Object(value)}function isStopIteration(exception){return object_toString(exception)==="[object StopIteration]"||exception instanceof QReturnValue}var QReturnValue;if(typeof ReturnValue!=="undefined"){QReturnValue=ReturnValue}else{QReturnValue=function(value){this.value=value}}var STACK_JUMP_SEPARATOR="From previous event:";function makeStackTraceLong(error,promise){if(hasStacks&&promise.stack&&typeof error==="object"&&error!==null&&error.stack&&error.stack.indexOf(STACK_JUMP_SEPARATOR)===-1){var stacks=[];for(var p=promise;!!p;p=p.source){if(p.stack){stacks.unshift(p.stack)}}stacks.unshift(error.stack);var concatedStacks=stacks.join("\n"+STACK_JUMP_SEPARATOR+"\n");error.stack=filterStackString(concatedStacks)}}function filterStackString(stackString){var lines=stackString.split("\n");var desiredLines=[];for(var i=0;i<lines.length;++i){var line=lines[i];if(!isInternalFrame(line)&&!isNodeFrame(line)&&line){desiredLines.push(line)}}return desiredLines.join("\n")}function isNodeFrame(stackLine){return stackLine.indexOf("(module.js:")!==-1||stackLine.indexOf("(node.js:")!==-1}function getFileNameAndLineNumber(stackLine){var attempt1=/at .+ \((.+):(\d+):(?:\d+)\)$/.exec(stackLine);if(attempt1){return[attempt1[1],Number(attempt1[2])]}var attempt2=/at ([^ ]+):(\d+):(?:\d+)$/.exec(stackLine);if(attempt2){return[attempt2[1],Number(attempt2[2])]}var attempt3=/.*@(.+):(\d+)$/.exec(stackLine);if(attempt3){return[attempt3[1],Number(attempt3[2])]}}function isInternalFrame(stackLine){var fileNameAndLineNumber=getFileNameAndLineNumber(stackLine);if(!fileNameAndLineNumber){return false}var fileName=fileNameAndLineNumber[0];var lineNumber=fileNameAndLineNumber[1];return fileName===qFileName&&lineNumber>=qStartingLine&&lineNumber<=qEndingLine}function captureLine(){if(!hasStacks){return}try{throw new Error}catch(e){var lines=e.stack.split("\n");var firstLine=lines[0].indexOf("@")>0?lines[1]:lines[2];var fileNameAndLineNumber=getFileNameAndLineNumber(firstLine);if(!fileNameAndLineNumber){return}qFileName=fileNameAndLineNumber[0];return fileNameAndLineNumber[1]}}function deprecate(callback,name,alternative){return function(){if(typeof console!=="undefined"&&typeof console.warn==="function"){console.warn(name+" is deprecated, use "+alternative+" instead.",new Error("").stack)}return callback.apply(callback,arguments)}}function Q(value){if(value instanceof Promise){return value}if(isPromiseAlike(value)){return coerce(value)}else{return fulfill(value)}}Q.resolve=Q;Q.nextTick=nextTick;Q.longStackSupport=false;if(typeof process==="object"&&process&&process.env&&process.env.Q_DEBUG){Q.longStackSupport=true}Q.defer=defer;function defer(){var messages=[],progressListeners=[],resolvedPromise;var deferred=object_create(defer.prototype);var promise=object_create(Promise.prototype);promise.promiseDispatch=function(resolve,op,operands){var args=array_slice(arguments);if(messages){messages.push(args);if(op==="when"&&operands[1]){progressListeners.push(operands[1])}}else{Q.nextTick(function(){resolvedPromise.promiseDispatch.apply(resolvedPromise,args)})}};promise.valueOf=function(){if(messages){return promise}var nearerValue=nearer(resolvedPromise);if(isPromise(nearerValue)){resolvedPromise=nearerValue}return nearerValue};promise.inspect=function(){if(!resolvedPromise){return{state:"pending"}}return resolvedPromise.inspect()};if(Q.longStackSupport&&hasStacks){try{throw new Error}catch(e){promise.stack=e.stack.substring(e.stack.indexOf("\n")+1)}}function become(newPromise){resolvedPromise=newPromise;promise.source=newPromise;array_reduce(messages,function(undefined,message){Q.nextTick(function(){newPromise.promiseDispatch.apply(newPromise,message)})},void 0);messages=void 0;progressListeners=void 0}deferred.promise=promise;deferred.resolve=function(value){if(resolvedPromise){return}become(Q(value))};deferred.fulfill=function(value){if(resolvedPromise){return}become(fulfill(value))};deferred.reject=function(reason){if(resolvedPromise){return}become(reject(reason))};deferred.notify=function(progress){if(resolvedPromise){return}array_reduce(progressListeners,function(undefined,progressListener){Q.nextTick(function(){progressListener(progress)})},void 0)};return deferred}defer.prototype.makeNodeResolver=function(){var self=this;return function(error,value){if(error){self.reject(error)}else if(arguments.length>2){self.resolve(array_slice(arguments,1))}else{self.resolve(value)}}};Q.Promise=promise;Q.promise=promise;function promise(resolver){if(typeof resolver!=="function"){throw new TypeError("resolver must be a function.")}var deferred=defer();try{resolver(deferred.resolve,deferred.reject,deferred.notify)}catch(reason){deferred.reject(reason)}return deferred.promise}promise.race=race;promise.all=all;promise.reject=reject;promise.resolve=Q;Q.passByCopy=function(object){return object};Promise.prototype.passByCopy=function(){return this};Q.join=function(x,y){return Q(x).join(y)};Promise.prototype.join=function(that){return Q([this,that]).spread(function(x,y){if(x===y){return x}else{throw new Error("Can't join: not the same: "+x+" "+y)}})};Q.race=race;function race(answerPs){return promise(function(resolve,reject){for(var i=0,len=answerPs.length;i<len;i++){Q(answerPs[i]).then(resolve,reject)}})}Promise.prototype.race=function(){return this.then(Q.race)};Q.makePromise=Promise;function Promise(descriptor,fallback,inspect){if(fallback===void 0){fallback=function(op){return reject(new Error("Promise does not support operation: "+op))}}if(inspect===void 0){inspect=function(){return{state:"unknown"}}}var promise=object_create(Promise.prototype);promise.promiseDispatch=function(resolve,op,args){var result;try{if(descriptor[op]){result=descriptor[op].apply(promise,args)}else{result=fallback.call(promise,op,args)}}catch(exception){result=reject(exception)}if(resolve){resolve(result)}};promise.inspect=inspect;if(inspect){var inspected=inspect();if(inspected.state==="rejected"){promise.exception=inspected.reason}promise.valueOf=function(){var inspected=inspect();if(inspected.state==="pending"||inspected.state==="rejected"){return promise}return inspected.value}}return promise}Promise.prototype.toString=function(){return"[object Promise]"};Promise.prototype.then=function(fulfilled,rejected,progressed){var self=this;var deferred=defer();var done=false;function _fulfilled(value){try{return typeof fulfilled==="function"?fulfilled(value):value}catch(exception){return reject(exception)}}function _rejected(exception){if(typeof rejected==="function"){makeStackTraceLong(exception,self);try{return rejected(exception)}catch(newException){return reject(newException)}}return reject(exception)}function _progressed(value){return typeof progressed==="function"?progressed(value):value}Q.nextTick(function(){self.promiseDispatch(function(value){if(done){return}done=true;deferred.resolve(_fulfilled(value))},"when",[function(exception){if(done){return}done=true;deferred.resolve(_rejected(exception))}])});self.promiseDispatch(void 0,"when",[void 0,function(value){var newValue;var threw=false;try{newValue=_progressed(value)}catch(e){threw=true;if(Q.onerror){Q.onerror(e)}else{throw e}}if(!threw){deferred.notify(newValue)}}]);return deferred.promise};Q.tap=function(promise,callback){return Q(promise).tap(callback)};Promise.prototype.tap=function(callback){callback=Q(callback);return this.then(function(value){return callback.fcall(value).thenResolve(value)})};Q.when=when;function when(value,fulfilled,rejected,progressed){return Q(value).then(fulfilled,rejected,progressed)}Promise.prototype.thenResolve=function(value){return this.then(function(){return value})};Q.thenResolve=function(promise,value){return Q(promise).thenResolve(value)};Promise.prototype.thenReject=function(reason){return this.then(function(){throw reason})};Q.thenReject=function(promise,reason){return Q(promise).thenReject(reason)};Q.nearer=nearer;function nearer(value){if(isPromise(value)){var inspected=value.inspect();if(inspected.state==="fulfilled"){return inspected.value}}return value}Q.isPromise=isPromise;function isPromise(object){return object instanceof Promise}Q.isPromiseAlike=isPromiseAlike;function isPromiseAlike(object){return isObject(object)&&typeof object.then==="function"}Q.isPending=isPending;function isPending(object){return isPromise(object)&&object.inspect().state==="pending"}Promise.prototype.isPending=function(){return this.inspect().state==="pending"};Q.isFulfilled=isFulfilled;function isFulfilled(object){return!isPromise(object)||object.inspect().state==="fulfilled"}Promise.prototype.isFulfilled=function(){return this.inspect().state==="fulfilled"};Q.isRejected=isRejected;function isRejected(object){return isPromise(object)&&object.inspect().state==="rejected"}Promise.prototype.isRejected=function(){return this.inspect().state==="rejected"};var unhandledReasons=[];var unhandledRejections=[];var reportedUnhandledRejections=[];var trackUnhandledRejections=true;function resetUnhandledRejections(){unhandledReasons.length=0;unhandledRejections.length=0;if(!trackUnhandledRejections){trackUnhandledRejections=true}}function trackRejection(promise,reason){if(!trackUnhandledRejections){return}if(typeof process==="object"&&typeof process.emit==="function"){Q.nextTick.runAfter(function(){if(array_indexOf(unhandledRejections,promise)!==-1){process.emit("unhandledRejection",reason,promise);reportedUnhandledRejections.push(promise)}})}unhandledRejections.push(promise);if(reason&&typeof reason.stack!=="undefined"){unhandledReasons.push(reason.stack)}else{unhandledReasons.push("(no stack) "+reason)}}function untrackRejection(promise){if(!trackUnhandledRejections){return}var at=array_indexOf(unhandledRejections,promise);if(at!==-1){if(typeof process==="object"&&typeof process.emit==="function"){Q.nextTick.runAfter(function(){var atReport=array_indexOf(reportedUnhandledRejections,promise);if(atReport!==-1){process.emit("rejectionHandled",unhandledReasons[at],promise);reportedUnhandledRejections.splice(atReport,1)}})}unhandledRejections.splice(at,1);unhandledReasons.splice(at,1)}}Q.resetUnhandledRejections=resetUnhandledRejections;Q.getUnhandledReasons=function(){return unhandledReasons.slice()};Q.stopUnhandledRejectionTracking=function(){resetUnhandledRejections();trackUnhandledRejections=false};resetUnhandledRejections();Q.reject=reject;function reject(reason){var rejection=Promise({when:function(rejected){if(rejected){untrackRejection(this)}return rejected?rejected(reason):this}},function fallback(){return this},function inspect(){return{state:"rejected",reason:reason}});trackRejection(rejection,reason);return rejection}Q.fulfill=fulfill;function fulfill(value){return Promise({when:function(){return value},get:function(name){return value[name]},set:function(name,rhs){value[name]=rhs},"delete":function(name){delete value[name]},post:function(name,args){if(name===null||name===void 0){return value.apply(void 0,args)}else{return value[name].apply(value,args)}},apply:function(thisp,args){return value.apply(thisp,args)},keys:function(){return object_keys(value)}},void 0,function inspect(){return{state:"fulfilled",value:value}})}function coerce(promise){var deferred=defer();Q.nextTick(function(){try{promise.then(deferred.resolve,deferred.reject,deferred.notify)}catch(exception){deferred.reject(exception)}});return deferred.promise}Q.master=master;function master(object){return Promise({isDef:function(){}},function fallback(op,args){return dispatch(object,op,args)},function(){return Q(object).inspect()})}Q.spread=spread;function spread(value,fulfilled,rejected){return Q(value).spread(fulfilled,rejected)}Promise.prototype.spread=function(fulfilled,rejected){return this.all().then(function(array){return fulfilled.apply(void 0,array)},rejected)};Q.async=async;function async(makeGenerator){return function(){function continuer(verb,arg){var result;if(typeof StopIteration==="undefined"){try{result=generator[verb](arg)}catch(exception){return reject(exception)}if(result.done){return Q(result.value)}else{return when(result.value,callback,errback)}}else{try{result=generator[verb](arg)}catch(exception){if(isStopIteration(exception)){return Q(exception.value)}else{return reject(exception)}}return when(result,callback,errback)}}var generator=makeGenerator.apply(this,arguments);var callback=continuer.bind(continuer,"next");var errback=continuer.bind(continuer,"throw");return callback()}}Q.spawn=spawn;function spawn(makeGenerator){Q.done(Q.async(makeGenerator)())}Q["return"]=_return;function _return(value){throw new QReturnValue(value)}Q.promised=promised;function promised(callback){return function(){return spread([this,all(arguments)],function(self,args){return callback.apply(self,args)})}}Q.dispatch=dispatch;function dispatch(object,op,args){return Q(object).dispatch(op,args)}Promise.prototype.dispatch=function(op,args){var self=this;var deferred=defer();Q.nextTick(function(){self.promiseDispatch(deferred.resolve,op,args)});return deferred.promise};Q.get=function(object,key){return Q(object).dispatch("get",[key])};Promise.prototype.get=function(key){return this.dispatch("get",[key])};Q.set=function(object,key,value){return Q(object).dispatch("set",[key,value])};Promise.prototype.set=function(key,value){return this.dispatch("set",[key,value])};Q.del=Q["delete"]=function(object,key){return Q(object).dispatch("delete",[key])};Promise.prototype.del=Promise.prototype["delete"]=function(key){return this.dispatch("delete",[key])};Q.mapply=Q.post=function(object,name,args){return Q(object).dispatch("post",[name,args])};Promise.prototype.mapply=Promise.prototype.post=function(name,args){return this.dispatch("post",[name,args])};Q.send=Q.mcall=Q.invoke=function(object,name){return Q(object).dispatch("post",[name,array_slice(arguments,2)])};Promise.prototype.send=Promise.prototype.mcall=Promise.prototype.invoke=function(name){return this.dispatch("post",[name,array_slice(arguments,1)])};Q.fapply=function(object,args){return Q(object).dispatch("apply",[void 0,args])};Promise.prototype.fapply=function(args){return this.dispatch("apply",[void 0,args])};Q["try"]=Q.fcall=function(object){return Q(object).dispatch("apply",[void 0,array_slice(arguments,1)])};Promise.prototype.fcall=function(){return this.dispatch("apply",[void 0,array_slice(arguments)])};Q.fbind=function(object){var promise=Q(object);var args=array_slice(arguments,1);return function fbound(){return promise.dispatch("apply",[this,args.concat(array_slice(arguments))])}};Promise.prototype.fbind=function(){var promise=this;var args=array_slice(arguments);return function fbound(){return promise.dispatch("apply",[this,args.concat(array_slice(arguments))])}};Q.keys=function(object){return Q(object).dispatch("keys",[])};Promise.prototype.keys=function(){return this.dispatch("keys",[])};Q.all=all;function all(promises){return when(promises,function(promises){var pendingCount=0;var deferred=defer();array_reduce(promises,function(undefined,promise,index){var snapshot;if(isPromise(promise)&&(snapshot=promise.inspect()).state==="fulfilled"){promises[index]=snapshot.value}else{++pendingCount;when(promise,function(value){promises[index]=value;if(--pendingCount===0){deferred.resolve(promises)}},deferred.reject,function(progress){deferred.notify({index:index,value:progress})})}},void 0);if(pendingCount===0){deferred.resolve(promises)}return deferred.promise})}Promise.prototype.all=function(){return all(this)};Q.any=any;function any(promises){if(promises.length===0){return Q.resolve()}var deferred=Q.defer();var pendingCount=0;array_reduce(promises,function(prev,current,index){var promise=promises[index];pendingCount++;when(promise,onFulfilled,onRejected,onProgress);function onFulfilled(result){deferred.resolve(result)}function onRejected(){pendingCount--;if(pendingCount===0){deferred.reject(new Error("Can't get fulfillment value from any promise, all "+"promises were rejected."))}}function onProgress(progress){deferred.notify({index:index,value:progress})}},undefined);return deferred.promise}Promise.prototype.any=function(){return any(this)};Q.allResolved=deprecate(allResolved,"allResolved","allSettled");function allResolved(promises){return when(promises,function(promises){promises=array_map(promises,Q);return when(all(array_map(promises,function(promise){return when(promise,noop,noop)})),function(){return promises})})}Promise.prototype.allResolved=function(){return allResolved(this)};Q.allSettled=allSettled;function allSettled(promises){return Q(promises).allSettled()}Promise.prototype.allSettled=function(){return this.then(function(promises){return all(array_map(promises,function(promise){promise=Q(promise);function regardless(){return promise.inspect()}return promise.then(regardless,regardless)}))})};Q.fail=Q["catch"]=function(object,rejected){return Q(object).then(void 0,rejected)};Promise.prototype.fail=Promise.prototype["catch"]=function(rejected){return this.then(void 0,rejected)};Q.progress=progress;function progress(object,progressed){return Q(object).then(void 0,void 0,progressed)}Promise.prototype.progress=function(progressed){return this.then(void 0,void 0,progressed)};Q.fin=Q["finally"]=function(object,callback){return Q(object)["finally"](callback)};Promise.prototype.fin=Promise.prototype["finally"]=function(callback){callback=Q(callback);return this.then(function(value){return callback.fcall().then(function(){return value})},function(reason){return callback.fcall().then(function(){throw reason})})};Q.done=function(object,fulfilled,rejected,progress){return Q(object).done(fulfilled,rejected,progress)};Promise.prototype.done=function(fulfilled,rejected,progress){var onUnhandledError=function(error){Q.nextTick(function(){makeStackTraceLong(error,promise);if(Q.onerror){Q.onerror(error)}else{throw error}})};var promise=fulfilled||rejected||progress?this.then(fulfilled,rejected,progress):this;if(typeof process==="object"&&process&&process.domain){onUnhandledError=process.domain.bind(onUnhandledError)}promise.then(void 0,onUnhandledError)};Q.timeout=function(object,ms,error){return Q(object).timeout(ms,error)};Promise.prototype.timeout=function(ms,error){var deferred=defer();var timeoutId=setTimeout(function(){if(!error||"string"===typeof error){error=new Error(error||"Timed out after "+ms+" ms");error.code="ETIMEDOUT"}deferred.reject(error)},ms);this.then(function(value){clearTimeout(timeoutId);deferred.resolve(value)},function(exception){clearTimeout(timeoutId);deferred.reject(exception)},deferred.notify);return deferred.promise};Q.delay=function(object,timeout){if(timeout===void 0){timeout=object;object=void 0}return Q(object).delay(timeout)};Promise.prototype.delay=function(timeout){
return this.then(function(value){var deferred=defer();setTimeout(function(){deferred.resolve(value)},timeout);return deferred.promise})};Q.nfapply=function(callback,args){return Q(callback).nfapply(args)};Promise.prototype.nfapply=function(args){var deferred=defer();var nodeArgs=array_slice(args);nodeArgs.push(deferred.makeNodeResolver());this.fapply(nodeArgs).fail(deferred.reject);return deferred.promise};Q.nfcall=function(callback){var args=array_slice(arguments,1);return Q(callback).nfapply(args)};Promise.prototype.nfcall=function(){var nodeArgs=array_slice(arguments);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());this.fapply(nodeArgs).fail(deferred.reject);return deferred.promise};Q.nfbind=Q.denodeify=function(callback){var baseArgs=array_slice(arguments,1);return function(){var nodeArgs=baseArgs.concat(array_slice(arguments));var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());Q(callback).fapply(nodeArgs).fail(deferred.reject);return deferred.promise}};Promise.prototype.nfbind=Promise.prototype.denodeify=function(){var args=array_slice(arguments);args.unshift(this);return Q.denodeify.apply(void 0,args)};Q.nbind=function(callback,thisp){var baseArgs=array_slice(arguments,2);return function(){var nodeArgs=baseArgs.concat(array_slice(arguments));var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());function bound(){return callback.apply(thisp,arguments)}Q(bound).fapply(nodeArgs).fail(deferred.reject);return deferred.promise}};Promise.prototype.nbind=function(){var args=array_slice(arguments,0);args.unshift(this);return Q.nbind.apply(void 0,args)};Q.nmapply=Q.npost=function(object,name,args){return Q(object).npost(name,args)};Promise.prototype.nmapply=Promise.prototype.npost=function(name,args){var nodeArgs=array_slice(args||[]);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());this.dispatch("post",[name,nodeArgs]).fail(deferred.reject);return deferred.promise};Q.nsend=Q.nmcall=Q.ninvoke=function(object,name){var nodeArgs=array_slice(arguments,2);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());Q(object).dispatch("post",[name,nodeArgs]).fail(deferred.reject);return deferred.promise};Promise.prototype.nsend=Promise.prototype.nmcall=Promise.prototype.ninvoke=function(name){var nodeArgs=array_slice(arguments,1);var deferred=defer();nodeArgs.push(deferred.makeNodeResolver());this.dispatch("post",[name,nodeArgs]).fail(deferred.reject);return deferred.promise};Q.nodeify=nodeify;function nodeify(object,nodeback){return Q(object).nodeify(nodeback)}Promise.prototype.nodeify=function(nodeback){if(nodeback){this.then(function(value){Q.nextTick(function(){nodeback(null,value)})},function(error){Q.nextTick(function(){nodeback(error)})})}else{return this}};Q.noConflict=function(){throw new Error("Q.noConflict only works when Q is used as a global")};var qEndingLine=captureLine();return Q})}).call(this,require("_process"))},{_process:1}]},{},[]);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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canMutationObserver=typeof window!=="undefined"&&window.MutationObserver;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}var queue=[];if(canMutationObserver){var hiddenDiv=document.createElement("div");var observer=new MutationObserver(function(){var queueList=queue.slice();queue.length=0;queueList.forEach(function(fn){fn()})});observer.observe(hiddenDiv,{attributes:true});return function nextTick(fn){if(!queue.length){hiddenDiv.setAttribute("yes","no")}queue.push(fn)}}if(canPost){window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],2:[function(require,module,exports){(function(define){"use strict";define(function(require){var makePromise=require("./makePromise");var Scheduler=require("./Scheduler");var async=require("./env").asap;return makePromise({scheduler:new Scheduler(async)})})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./Scheduler":3,"./env":15,"./makePromise":17}],3:[function(require,module,exports){(function(define){"use strict";define(function(){function Scheduler(async){this._async=async;this._running=false;this._queue=this;this._queueLen=0;this._afterQueue={};this._afterQueueLen=0;var self=this;this.drain=function(){self._drain()}}Scheduler.prototype.enqueue=function(task){this._queue[this._queueLen++]=task;this.run()};Scheduler.prototype.afterQueue=function(task){this._afterQueue[this._afterQueueLen++]=task;this.run()};Scheduler.prototype.run=function(){if(!this._running){this._running=true;this._async(this.drain)}};Scheduler.prototype._drain=function(){var i=0;for(;i<this._queueLen;++i){this._queue[i].run();this._queue[i]=void 0}this._queueLen=0;this._running=false;for(i=0;i<this._afterQueueLen;++i){this._afterQueue[i].run();this._afterQueue[i]=void 0}this._afterQueueLen=0};return Scheduler})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],4:[function(require,module,exports){(function(define){"use strict";define(function(){function TimeoutError(message){Error.call(this);this.message=message;this.name=TimeoutError.name;if(typeof Error.captureStackTrace==="function"){Error.captureStackTrace(this,TimeoutError)}}TimeoutError.prototype=Object.create(Error.prototype);TimeoutError.prototype.constructor=TimeoutError;return TimeoutError})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],5:[function(require,module,exports){(function(define){"use strict";define(function(){makeApply.tryCatchResolve=tryCatchResolve;return makeApply;function makeApply(Promise,call){if(arguments.length<2){call=tryCatchResolve}return apply;function apply(f,thisArg,args){var p=Promise._defer();var l=args.length;var params=new Array(l);callAndResolve({f:f,thisArg:thisArg,args:args,params:params,i:l-1,call:call},p._handler);return p}function callAndResolve(c,h){if(c.i<0){return call(c.f,c.thisArg,c.params,h)}var handler=Promise._handler(c.args[c.i]);handler.fold(callAndResolveNext,c,void 0,h)}function callAndResolveNext(c,x,h){c.params[c.i]=x;c.i-=1;callAndResolve(c,h)}}function tryCatchResolve(f,thisArg,args,resolver){try{resolver.resolve(f.apply(thisArg,args))}catch(e){resolver.reject(e)}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],6:[function(require,module,exports){(function(define){"use strict";define(function(require){var state=require("../state");var applier=require("../apply");return function array(Promise){var applyFold=applier(Promise);var toPromise=Promise.resolve;var all=Promise.all;var ar=Array.prototype.reduce;var arr=Array.prototype.reduceRight;var slice=Array.prototype.slice;Promise.any=any;Promise.some=some;Promise.settle=settle;Promise.map=map;Promise.filter=filter;Promise.reduce=reduce;Promise.reduceRight=reduceRight;Promise.prototype.spread=function(onFulfilled){return this.then(all).then(function(array){return onFulfilled.apply(this,array)})};return Promise;function any(promises){var p=Promise._defer();var resolver=p._handler;var l=promises.length>>>0;var pending=l;var errors=[];for(var h,x,i=0;i<l;++i){x=promises[i];if(x===void 0&&!(i in promises)){--pending;continue}h=Promise._handler(x);if(h.state()>0){resolver.become(h);Promise._visitRemaining(promises,i,h);break}else{h.visit(resolver,handleFulfill,handleReject)}}if(pending===0){resolver.reject(new RangeError("any(): array must not be empty"))}return p;function handleFulfill(x){errors=null;this.resolve(x)}function handleReject(e){if(this.resolved){return}errors.push(e);if(--pending===0){this.reject(errors)}}}function some(promises,n){var p=Promise._defer();var resolver=p._handler;var results=[];var errors=[];var l=promises.length>>>0;var nFulfill=0;var nReject;var x,i;for(i=0;i<l;++i){x=promises[i];if(x===void 0&&!(i in promises)){continue}++nFulfill}n=Math.max(n,0);nReject=nFulfill-n+1;nFulfill=Math.min(n,nFulfill);if(n>nFulfill){resolver.reject(new RangeError("some(): array must contain at least "+n+" item(s), but had "+nFulfill))}else if(nFulfill===0){resolver.resolve(results)}for(i=0;i<l;++i){x=promises[i];if(x===void 0&&!(i in promises)){continue}Promise._handler(x).visit(resolver,fulfill,reject,resolver.notify)}return p;function fulfill(x){if(this.resolved){return}results.push(x);if(--nFulfill===0){errors=null;this.resolve(results)}}function reject(e){if(this.resolved){return}errors.push(e);if(--nReject===0){results=null;this.reject(errors)}}}function map(promises,f){return Promise._traverse(f,promises)}function filter(promises,predicate){var a=slice.call(promises);return Promise._traverse(predicate,a).then(function(keep){return filterSync(a,keep)})}function filterSync(promises,keep){var l=keep.length;var filtered=new Array(l);for(var i=0,j=0;i<l;++i){if(keep[i]){filtered[j++]=Promise._handler(promises[i]).value}}filtered.length=j;return filtered}function settle(promises){return all(promises.map(settleOne))}function settleOne(p){var h=Promise._handler(p);if(h.state()===0){return toPromise(p).then(state.fulfilled,state.rejected)}h._unreport();return state.inspect(h)}function reduce(promises,f){return arguments.length>2?ar.call(promises,liftCombine(f),arguments[2]):ar.call(promises,liftCombine(f))}function reduceRight(promises,f){return arguments.length>2?arr.call(promises,liftCombine(f),arguments[2]):arr.call(promises,liftCombine(f))}function liftCombine(f){return function(z,x,i){return applyFold(f,void 0,[z,x,i])}}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../apply":5,"../state":18}],7:[function(require,module,exports){(function(define){"use strict";define(function(){return function flow(Promise){var resolve=Promise.resolve;var reject=Promise.reject;var origCatch=Promise.prototype["catch"];Promise.prototype.done=function(onResult,onError){this._handler.visit(this._handler.receiver,onResult,onError)};Promise.prototype["catch"]=Promise.prototype.otherwise=function(onRejected){if(arguments.length<2){return origCatch.call(this,onRejected)}if(typeof onRejected!=="function"){return this.ensure(rejectInvalidPredicate)}return origCatch.call(this,createCatchFilter(arguments[1],onRejected))};function createCatchFilter(handler,predicate){return function(e){return evaluatePredicate(e,predicate)?handler.call(this,e):reject(e)}}Promise.prototype["finally"]=Promise.prototype.ensure=function(handler){if(typeof handler!=="function"){return this}return this.then(function(x){return runSideEffect(handler,this,identity,x)},function(e){return runSideEffect(handler,this,reject,e)})};function runSideEffect(handler,thisArg,propagate,value){var result=handler.call(thisArg);return maybeThenable(result)?propagateValue(result,propagate,value):propagate(value)}function propagateValue(result,propagate,x){return resolve(result).then(function(){return propagate(x)})}Promise.prototype["else"]=Promise.prototype.orElse=function(defaultValue){return this.then(void 0,function(){return defaultValue})};Promise.prototype["yield"]=function(value){return this.then(function(){return value})};Promise.prototype.tap=function(onFulfilledSideEffect){return this.then(onFulfilledSideEffect)["yield"](this)};return Promise};function rejectInvalidPredicate(){throw new TypeError("catch predicate must be a function")}function evaluatePredicate(e,predicate){return isError(predicate)?e instanceof predicate:predicate(e)}function isError(predicate){return predicate===Error||predicate!=null&&predicate.prototype instanceof Error}function maybeThenable(x){return(typeof x==="object"||typeof x==="function")&&x!==null}function identity(x){return x}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],8:[function(require,module,exports){(function(define){"use strict";define(function(){return function fold(Promise){Promise.prototype.fold=function(f,z){var promise=this._beget();this._handler.fold(function(z,x,to){Promise._handler(z).fold(function(x,z,to){to.resolve(f.call(this,z,x))},x,this,to)},z,promise._handler.receiver,promise._handler);return promise};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],9:[function(require,module,exports){(function(define){"use strict";define(function(require){var inspect=require("../state").inspect;return function inspection(Promise){Promise.prototype.inspect=function(){return inspect(Promise._handler(this))};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../state":18}],10:[function(require,module,exports){(function(define){"use strict";define(function(){return function generate(Promise){var resolve=Promise.resolve;Promise.iterate=iterate;Promise.unfold=unfold;return Promise;function iterate(f,condition,handler,x){return unfold(function(x){return[x,f(x)]},condition,handler,x)}function unfold(unspool,condition,handler,x){return resolve(x).then(function(seed){return resolve(condition(seed)).then(function(done){return done?seed:resolve(unspool(seed)).spread(next)})});function next(item,newSeed){return resolve(handler(item)).then(function(){return unfold(unspool,condition,handler,newSeed)})}}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],11:[function(require,module,exports){(function(define){"use strict";define(function(){return function progress(Promise){Promise.prototype.progress=function(onProgress){return this.then(void 0,void 0,onProgress)};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],12:[function(require,module,exports){(function(define){"use strict";define(function(require){var env=require("../env");var TimeoutError=require("../TimeoutError");function setTimeout(f,ms,x,y){return env.setTimer(function(){f(x,y,ms)},ms)}return function timed(Promise){Promise.prototype.delay=function(ms){var p=this._beget();this._handler.fold(handleDelay,ms,void 0,p._handler);return p};function handleDelay(ms,x,h){setTimeout(resolveDelay,ms,x,h)}function resolveDelay(x,h){h.resolve(x)}Promise.prototype.timeout=function(ms,reason){var p=this._beget();var h=p._handler;var t=setTimeout(onTimeout,ms,reason,p._handler);this._handler.visit(h,function onFulfill(x){env.clearTimer(t);this.resolve(x)},function onReject(x){env.clearTimer(t);this.reject(x)},h.notify);return p};function onTimeout(reason,h,ms){var e=typeof reason==="undefined"?new TimeoutError("timed out after "+ms+"ms"):reason;h.reject(e)}return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../TimeoutError":4,"../env":15}],13:[function(require,module,exports){(function(define){"use strict";define(function(require){var setTimer=require("../env").setTimer;var format=require("../format");return function unhandledRejection(Promise){var logError=noop;var logInfo=noop;var localConsole;if(typeof console!=="undefined"){localConsole=console;logError=typeof localConsole.error!=="undefined"?function(e){localConsole.error(e)}:function(e){localConsole.log(e)};logInfo=typeof localConsole.info!=="undefined"?function(e){localConsole.info(e)}:function(e){localConsole.log(e)}}Promise.onPotentiallyUnhandledRejection=function(rejection){enqueue(report,rejection)};Promise.onPotentiallyUnhandledRejectionHandled=function(rejection){enqueue(unreport,rejection)};Promise.onFatalRejection=function(rejection){enqueue(throwit,rejection.value)};var tasks=[];var reported=[];var running=null;function report(r){if(!r.handled){reported.push(r);logError("Potentially unhandled rejection ["+r.id+"] "+format.formatError(r.value))}}function unreport(r){var i=reported.indexOf(r);if(i>=0){reported.splice(i,1);logInfo("Handled previous rejection ["+r.id+"] "+format.formatObject(r.value))}}function enqueue(f,x){tasks.push(f,x);if(running===null){running=setTimer(flush,0)}}function flush(){running=null;while(tasks.length>0){tasks.shift()(tasks.shift())}}return Promise};function throwit(e){throw e}function noop(){}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../env":15,"../format":16}],14:[function(require,module,exports){(function(define){"use strict";define(function(){return function addWith(Promise){Promise.prototype["with"]=Promise.prototype.withThis=function(receiver){var p=this._beget();var child=p._handler;child.receiver=receiver;this._handler.chain(child,receiver);return p};return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],15:[function(require,module,exports){(function(process){(function(define){"use strict";define(function(require){var MutationObs;var capturedSetTimeout=typeof setTimeout!=="undefined"&&setTimeout;var setTimer=function(f,ms){return setTimeout(f,ms)};var clearTimer=function(t){return clearTimeout(t)};var asap=function(f){return capturedSetTimeout(f,0)};if(isNode()){asap=function(f){return process.nextTick(f)}}else if(MutationObs=hasMutationObserver()){asap=initMutationObserver(MutationObs)}else if(!capturedSetTimeout){var vertxRequire=require;var vertx=vertxRequire("vertx");setTimer=function(f,ms){return vertx.setTimer(ms,f)};clearTimer=vertx.cancelTimer;asap=vertx.runOnLoop||vertx.runOnContext}return{setTimer:setTimer,clearTimer:clearTimer,asap:asap};function isNode(){return typeof process!=="undefined"&&Object.prototype.toString.call(process)==="[object process]"}function hasMutationObserver(){return typeof MutationObserver==="function"&&MutationObserver||typeof WebKitMutationObserver==="function"&&WebKitMutationObserver}function initMutationObserver(MutationObserver){var scheduled;var node=document.createTextNode("");var o=new MutationObserver(run);o.observe(node,{characterData:true});function run(){var f=scheduled;scheduled=void 0;f()}var i=0;return function(f){scheduled=f;node.data=i^=1}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})}).call(this,require("_process"))},{_process:1}],16:[function(require,module,exports){(function(define){"use strict";define(function(){return{formatError:formatError,formatObject:formatObject,tryStringify:tryStringify};function formatError(e){var s=typeof e==="object"&&e!==null&&e.stack?e.stack:formatObject(e);return e instanceof Error?s:s+" (WARNING: non-Error used)"}function formatObject(o){var s=String(o);if(s==="[object Object]"&&typeof JSON!=="undefined"){s=tryStringify(o,s)}return s}function tryStringify(x,defaultValue){try{return JSON.stringify(x)}catch(e){return defaultValue}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],17:[function(require,module,exports){(function(process){(function(define){"use strict";define(function(){return function makePromise(environment){var tasks=environment.scheduler;var emitRejection=initEmitRejection();var objectCreate=Object.create||function(proto){function Child(){}Child.prototype=proto;return new Child};function Promise(resolver,handler){this._handler=resolver===Handler?handler:init(resolver)}function init(resolver){var handler=new Pending;try{resolver(promiseResolve,promiseReject,promiseNotify)}catch(e){promiseReject(e)}return handler;function promiseResolve(x){handler.resolve(x)}function promiseReject(reason){handler.reject(reason)}function promiseNotify(x){handler.notify(x)}}Promise.resolve=resolve;Promise.reject=reject;Promise.never=never;Promise._defer=defer;Promise._handler=getHandler;function resolve(x){return isPromise(x)?x:new Promise(Handler,new Async(getHandler(x)))}function reject(x){return new Promise(Handler,new Async(new Rejected(x)))}function never(){return foreverPendingPromise}function defer(){return new Promise(Handler,new Pending)}Promise.prototype.then=function(onFulfilled,onRejected,onProgress){var parent=this._handler;var state=parent.join().state();if(typeof onFulfilled!=="function"&&state>0||typeof onRejected!=="function"&&state<0){return new this.constructor(Handler,parent)}var p=this._beget();var child=p._handler;parent.chain(child,parent.receiver,onFulfilled,onRejected,onProgress);return p};Promise.prototype["catch"]=function(onRejected){return this.then(void 0,onRejected)};Promise.prototype._beget=function(){return begetFrom(this._handler,this.constructor)};function begetFrom(parent,Promise){var child=new Pending(parent.receiver,parent.join().context);return new Promise(Handler,child)}Promise.all=all;Promise.race=race;Promise._traverse=traverse;function all(promises){return traverseWith(snd,null,promises)}function traverse(f,promises){return traverseWith(tryCatch2,f,promises)}function traverseWith(tryMap,f,promises){var handler=typeof f==="function"?mapAt:settleAt;var resolver=new Pending;var pending=promises.length>>>0;var results=new Array(pending);for(var i=0,x;i<promises.length&&!resolver.resolved;++i){x=promises[i];if(x===void 0&&!(i in promises)){--pending;continue}traverseAt(promises,handler,i,x,resolver)}if(pending===0){resolver.become(new Fulfilled(results))}return new Promise(Handler,resolver);function mapAt(i,x,resolver){if(!resolver.resolved){traverseAt(promises,settleAt,i,tryMap(f,x,i),resolver)}}function settleAt(i,x,resolver){results[i]=x;if(--pending===0){resolver.become(new Fulfilled(results))}}}function traverseAt(promises,handler,i,x,resolver){if(maybeThenable(x)){var h=getHandlerMaybeThenable(x);var s=h.state();if(s===0){h.fold(handler,i,void 0,resolver)}else if(s>0){handler(i,h.value,resolver)}else{resolver.become(h);visitRemaining(promises,i+1,h)}}else{handler(i,x,resolver)}}Promise._visitRemaining=visitRemaining;function visitRemaining(promises,start,handler){for(var i=start;i<promises.length;++i){markAsHandled(getHandler(promises[i]),handler)}}function markAsHandled(h,handler){if(h===handler){return}var s=h.state();if(s===0){h.visit(h,void 0,h._unreport)}else if(s<0){h._unreport()}}function race(promises){if(typeof promises!=="object"||promises===null){return reject(new TypeError("non-iterable passed to race()"))}return promises.length===0?never():promises.length===1?resolve(promises[0]):runRace(promises)}function runRace(promises){var resolver=new Pending;var i,x,h;for(i=0;i<promises.length;++i){x=promises[i];if(x===void 0&&!(i in promises)){continue}h=getHandler(x);if(h.state()!==0){resolver.become(h);visitRemaining(promises,i+1,h);break}else{h.visit(resolver,resolver.resolve,resolver.reject)}}return new Promise(Handler,resolver)}function getHandler(x){if(isPromise(x)){return x._handler.join()}return maybeThenable(x)?getHandlerUntrusted(x):new Fulfilled(x)}function getHandlerMaybeThenable(x){return isPromise(x)?x._handler.join():getHandlerUntrusted(x)}function getHandlerUntrusted(x){try{var untrustedThen=x.then;return typeof untrustedThen==="function"?new Thenable(untrustedThen,x):new Fulfilled(x)}catch(e){return new Rejected(e)}}function Handler(){}Handler.prototype.when=Handler.prototype.become=Handler.prototype.notify=Handler.prototype.fail=Handler.prototype._unreport=Handler.prototype._report=noop;Handler.prototype._state=0;Handler.prototype.state=function(){return this._state};Handler.prototype.join=function(){var h=this;while(h.handler!==void 0){h=h.handler}return h};Handler.prototype.chain=function(to,receiver,fulfilled,rejected,progress){this.when({resolver:to,receiver:receiver,fulfilled:fulfilled,rejected:rejected,progress:progress})};Handler.prototype.visit=function(receiver,fulfilled,rejected,progress){this.chain(failIfRejected,receiver,fulfilled,rejected,progress)};Handler.prototype.fold=function(f,z,c,to){this.when(new Fold(f,z,c,to))};function FailIfRejected(){}inherit(Handler,FailIfRejected);FailIfRejected.prototype.become=function(h){h.fail()};var failIfRejected=new FailIfRejected;function Pending(receiver,inheritedContext){Promise.createContext(this,inheritedContext);this.consumers=void 0;this.receiver=receiver;this.handler=void 0;this.resolved=false}inherit(Handler,Pending);Pending.prototype._state=0;Pending.prototype.resolve=function(x){this.become(getHandler(x))};Pending.prototype.reject=function(x){if(this.resolved){return}this.become(new Rejected(x))};Pending.prototype.join=function(){if(!this.resolved){return this}var h=this;while(h.handler!==void 0){h=h.handler;if(h===this){return this.handler=cycle()}}return h};Pending.prototype.run=function(){var q=this.consumers;var handler=this.handler;this.handler=this.handler.join();this.consumers=void 0;for(var i=0;i<q.length;++i){handler.when(q[i])}};Pending.prototype.become=function(handler){if(this.resolved){return}this.resolved=true;this.handler=handler;if(this.consumers!==void 0){tasks.enqueue(this)}if(this.context!==void 0){handler._report(this.context)}};Pending.prototype.when=function(continuation){if(this.resolved){tasks.enqueue(new ContinuationTask(continuation,this.handler))}else{if(this.consumers===void 0){this.consumers=[continuation]}else{this.consumers.push(continuation)}}};Pending.prototype.notify=function(x){if(!this.resolved){tasks.enqueue(new ProgressTask(x,this))}};Pending.prototype.fail=function(context){var c=typeof context==="undefined"?this.context:context;this.resolved&&this.handler.join().fail(c)};Pending.prototype._report=function(context){this.resolved&&this.handler.join()._report(context)};Pending.prototype._unreport=function(){this.resolved&&this.handler.join()._unreport()};function Async(handler){this.handler=handler}inherit(Handler,Async);Async.prototype.when=function(continuation){tasks.enqueue(new ContinuationTask(continuation,this))};Async.prototype._report=function(context){this.join()._report(context)};Async.prototype._unreport=function(){this.join()._unreport()};function Thenable(then,thenable){Pending.call(this);tasks.enqueue(new AssimilateTask(then,thenable,this))}inherit(Pending,Thenable);function Fulfilled(x){Promise.createContext(this);this.value=x}inherit(Handler,Fulfilled);Fulfilled.prototype._state=1;Fulfilled.prototype.fold=function(f,z,c,to){runContinuation3(f,z,this,c,to)};Fulfilled.prototype.when=function(cont){runContinuation1(cont.fulfilled,this,cont.receiver,cont.resolver)};var errorId=0;function Rejected(x){Promise.createContext(this);this.id=++errorId;this.value=x;this.handled=false;this.reported=false;this._report()}inherit(Handler,Rejected);Rejected.prototype._state=-1;Rejected.prototype.fold=function(f,z,c,to){to.become(this)};Rejected.prototype.when=function(cont){if(typeof cont.rejected==="function"){this._unreport()}runContinuation1(cont.rejected,this,cont.receiver,cont.resolver)};Rejected.prototype._report=function(context){tasks.afterQueue(new ReportTask(this,context))};Rejected.prototype._unreport=function(){if(this.handled){return}this.handled=true;tasks.afterQueue(new UnreportTask(this))};Rejected.prototype.fail=function(context){this.reported=true;emitRejection("unhandledRejection",this);Promise.onFatalRejection(this,context===void 0?this.context:context)};function ReportTask(rejection,context){this.rejection=rejection;this.context=context}ReportTask.prototype.run=function(){if(!this.rejection.handled&&!this.rejection.reported){this.rejection.reported=true;emitRejection("unhandledRejection",this.rejection)||Promise.onPotentiallyUnhandledRejection(this.rejection,this.context)}};function UnreportTask(rejection){this.rejection=rejection}UnreportTask.prototype.run=function(){if(this.rejection.reported){emitRejection("rejectionHandled",this.rejection)||Promise.onPotentiallyUnhandledRejectionHandled(this.rejection)}};Promise.createContext=Promise.enterContext=Promise.exitContext=Promise.onPotentiallyUnhandledRejection=Promise.onPotentiallyUnhandledRejectionHandled=Promise.onFatalRejection=noop;var foreverPendingHandler=new Handler;var foreverPendingPromise=new Promise(Handler,foreverPendingHandler);function cycle(){return new Rejected(new TypeError("Promise cycle"))}function ContinuationTask(continuation,handler){this.continuation=continuation;this.handler=handler}ContinuationTask.prototype.run=function(){this.handler.join().when(this.continuation)};function ProgressTask(value,handler){this.handler=handler;this.value=value}ProgressTask.prototype.run=function(){var q=this.handler.consumers;if(q===void 0){return}for(var c,i=0;i<q.length;++i){c=q[i];runNotify(c.progress,this.value,this.handler,c.receiver,c.resolver)}};function AssimilateTask(then,thenable,resolver){this._then=then;this.thenable=thenable;this.resolver=resolver}AssimilateTask.prototype.run=function(){var h=this.resolver;tryAssimilate(this._then,this.thenable,_resolve,_reject,_notify);function _resolve(x){h.resolve(x)}function _reject(x){h.reject(x)}function _notify(x){h.notify(x)}};function tryAssimilate(then,thenable,resolve,reject,notify){try{then.call(thenable,resolve,reject,notify)}catch(e){reject(e)}}function Fold(f,z,c,to){this.f=f;this.z=z;this.c=c;this.to=to;this.resolver=failIfRejected;this.receiver=this}Fold.prototype.fulfilled=function(x){this.f.call(this.c,this.z,x,this.to)};Fold.prototype.rejected=function(x){this.to.reject(x)};Fold.prototype.progress=function(x){this.to.notify(x)};function isPromise(x){return x instanceof Promise}function maybeThenable(x){return(typeof x==="object"||typeof x==="function")&&x!==null}function runContinuation1(f,h,receiver,next){if(typeof f!=="function"){return next.become(h)}Promise.enterContext(h);tryCatchReject(f,h.value,receiver,next);Promise.exitContext()}function runContinuation3(f,x,h,receiver,next){if(typeof f!=="function"){return next.become(h)}Promise.enterContext(h);tryCatchReject3(f,x,h.value,receiver,next);Promise.exitContext()}function runNotify(f,x,h,receiver,next){if(typeof f!=="function"){return next.notify(x)}Promise.enterContext(h);tryCatchReturn(f,x,receiver,next);Promise.exitContext()}function tryCatch2(f,a,b){try{return f(a,b)}catch(e){return reject(e)}}function tryCatchReject(f,x,thisArg,next){try{next.become(getHandler(f.call(thisArg,x)))}catch(e){next.become(new Rejected(e))}}function tryCatchReject3(f,x,y,thisArg,next){try{f.call(thisArg,x,y,next)}catch(e){next.become(new Rejected(e))}}function tryCatchReturn(f,x,thisArg,next){try{next.notify(f.call(thisArg,x))}catch(e){next.notify(e)}}function inherit(Parent,Child){Child.prototype=objectCreate(Parent.prototype);Child.prototype.constructor=Child}function snd(x,y){return y}function noop(){}function initEmitRejection(){if(typeof process!=="undefined"&&process!==null&&typeof process.emit==="function"){return function(type,rejection){return type==="unhandledRejection"?process.emit(type,rejection.value,rejection):process.emit(type,rejection)}}else if(typeof self!=="undefined"&&typeof CustomEvent==="function"){
return function(noop,self,CustomEvent){var hasCustomEvent=false;try{var ev=new CustomEvent("unhandledRejection");hasCustomEvent=ev instanceof CustomEvent}catch(e){}return!hasCustomEvent?noop:function(type,rejection){var ev=new CustomEvent(type,{detail:{reason:rejection.value,key:rejection},bubbles:false,cancelable:true});return!self.dispatchEvent(ev)}}(noop,self,CustomEvent)}return noop}return Promise}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})}).call(this,require("_process"))},{_process:1}],18:[function(require,module,exports){(function(define){"use strict";define(function(){return{pending:toPendingState,fulfilled:toFulfilledState,rejected:toRejectedState,inspect:inspect};function toPendingState(){return{state:"pending"}}function toRejectedState(e){return{state:"rejected",reason:e}}function toFulfilledState(x){return{state:"fulfilled",value:x}}function inspect(handler){var state=handler.state();return state===0?toPendingState():state>0?toFulfilledState(handler.value):toRejectedState(handler.value)}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory()})},{}],when:[function(require,module,exports){(function(define){"use strict";define(function(require){var timed=require("./lib/decorators/timed");var array=require("./lib/decorators/array");var flow=require("./lib/decorators/flow");var fold=require("./lib/decorators/fold");var inspect=require("./lib/decorators/inspect");var generate=require("./lib/decorators/iterate");var progress=require("./lib/decorators/progress");var withThis=require("./lib/decorators/with");var unhandledRejection=require("./lib/decorators/unhandledRejection");var TimeoutError=require("./lib/TimeoutError");var Promise=[array,flow,fold,generate,progress,inspect,withThis,timed,unhandledRejection].reduce(function(Promise,feature){return feature(Promise)},require("./lib/Promise"));var apply=require("./lib/apply")(Promise);when.promise=promise;when.resolve=Promise.resolve;when.reject=Promise.reject;when.lift=lift;when["try"]=attempt;when.attempt=attempt;when.iterate=Promise.iterate;when.unfold=Promise.unfold;when.join=join;when.all=all;when.settle=settle;when.any=lift(Promise.any);when.some=lift(Promise.some);when.race=lift(Promise.race);when.map=map;when.filter=filter;when.reduce=lift(Promise.reduce);when.reduceRight=lift(Promise.reduceRight);when.isPromiseLike=isPromiseLike;when.Promise=Promise;when.defer=defer;when.TimeoutError=TimeoutError;function when(x,onFulfilled,onRejected,onProgress){var p=Promise.resolve(x);if(arguments.length<2){return p}return p.then(onFulfilled,onRejected,onProgress)}function promise(resolver){return new Promise(resolver)}function lift(f){return function(){for(var i=0,l=arguments.length,a=new Array(l);i<l;++i){a[i]=arguments[i]}return apply(f,this,a)}}function attempt(f){for(var i=0,l=arguments.length-1,a=new Array(l);i<l;++i){a[i]=arguments[i+1]}return apply(f,this,a)}function defer(){return new Deferred}function Deferred(){var p=Promise._defer();function resolve(x){p._handler.resolve(x)}function reject(x){p._handler.reject(x)}function notify(x){p._handler.notify(x)}this.promise=p;this.resolve=resolve;this.reject=reject;this.notify=notify;this.resolver={resolve:resolve,reject:reject,notify:notify}}function isPromiseLike(x){return x&&typeof x.then==="function"}function join(){return Promise.all(arguments)}function all(promises){return when(promises,Promise.all)}function settle(promises){return when(promises,Promise.settle)}function map(promises,mapFunc){return when(promises,function(promises){return Promise.map(promises,mapFunc)})}function filter(promises,predicate){return when(promises,function(promises){return Promise.filter(promises,predicate)})}return when})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./lib/Promise":2,"./lib/TimeoutError":4,"./lib/apply":5,"./lib/decorators/array":6,"./lib/decorators/flow":7,"./lib/decorators/fold":8,"./lib/decorators/inspect":9,"./lib/decorators/iterate":10,"./lib/decorators/progress":11,"./lib/decorators/timed":12,"./lib/decorators/unhandledRejection":13,"./lib/decorators/with":14}]},{},[]);var Benchmark=require("benchmark");var Q=require("q");var when=require("when");var suite=new Benchmark.Suite;suite.add("QTest",function(){var d=Q.defer();var code="q"+Math.random();function eventFunc(e){if(e.data===code){window.removeEventListener("message",eventFunc);d.resolve()}}window.addEventListener("message",eventFunc);d.promise.then(function(){deferred.resolve()});window.postMessage(code,"*")}).add("RSVPTest",function(){var d=Q.defer();var code="q"+Math.random();function eventFunc(e){if(e.data===code){window.removeEventListener("message",eventFunc);d.resolve()}}window.addEventListener("message",eventFunc);d.promise.then(function(){deferred.resolve()});window.postMessage(code,"*")}).add("whenTest",function(){var d=when.defer();var code="when"+Math.random();function eventFunc(e){if(e.data===code){window.removeEventListener("message",eventFunc);d.resolve()}}window.addEventListener("message",eventFunc);d.promise.then(function(){deferred.resolve()});window.postMessage(code,"*")}).on("cycle",function(event){console.log(String(event.target))}).on("complete",function(){console.log("Fastest is "+this.filter("fastest").pluck("name"))});
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"benchmark": "1.0.0",
"q": "1.4.1",
"when": "3.7.3"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment