-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathoni-apollo.js
More file actions
29 lines (29 loc) · 91.5 KB
/
Copy pathoni-apollo.js
File metadata and controls
29 lines (29 loc) · 91.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
* Oni Apollo client-side SJS library
* 0.9.2
* http://onilabs.com/apollo
*
* (c) 2010 Oni Labs, http://onilabs.com
*
* This file is licensed under the terms of the MIT License:
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*/
var __oni_rt={};(function(exports){var UA=navigator.userAgent.toLowerCase();if(UA.indexOf(" chrome/")>=0)UA="chrome";else if(UA.indexOf(" firefox/")>=0)UA="firefox";else if(UA.indexOf(" safari/")>=0)UA="safari";else if(UA.indexOf(" msie ")>=0)UA="msie";else UA="unknown";exports.UA=UA;var token_ef={};function is_ef(obj){return obj&&obj.__oni_ef==token_ef}function EF_Base(){}EF_Base.prototype={toString:function(){return "<suspended SJS>"},__oni_ef:token_ef,setChildFrame:function(ef,idx){this.async=true;this.child_frame=ef;ef.parent=this;ef.parent_idx=idx},abort:function(){return this.child_frame.abort()},returnToParent:function(val){if(is_cfx(val)){if(val.type=="r"&&this.swallow_r)val=val.val;if(this.swallow_bc&&(val.type=="b"||val.type=="c"))val=val.val}else if(this.swallow_r){if(is_ef(val))val.swallow_r=true;else val=undefined}if(this.async){if(this.parent)this.parent.cont(this.parent_idx,val);else if(is_cfx(val))val.mapToJS()}else return val}};var token_cfx={};function is_cfx(obj){return obj&&obj.__oni_cfx==token_cfx}var token_oniE={};function CFException(type,value,line,file){this.type=type;if(type=="t"&&(value instanceof Error)&&value._oniE!==token_oniE&&line!=="passthrough"){if(UA=="firefox"){var oe=value;value=new Error();for(var a in oe)value[a]=oe[a]}else if(UA=="msie"){var oe=value;value=new Error(value.message+" ("+file+(line?":"+line:"")+")");for(var a in oe)value[a]=oe[a]}value._oniE=token_oniE;value.lineNumber=line;value.fileName=file||"unknown SJS source";value.stack="";if(!value.hasOwnProperty('toString'))value.toString=function(){return this.name+": "+this.message+" ("+this.fileName+(this.lineNumber?":"+this.lineNumber:"")+")"}}this.val=value}CFException.prototype={__oni_cfx:token_cfx,toString:function(){var known={r:"return",b:"break",c:"continue"};if(this.type in known)return "Unexpected "+known[this.type]+" statement";else return "Uncaught internal SJS control flow exception ("+this.type+":: "+this.val+")"},mapToJS:function(){if(this.type=="t")throw this.val;else throw this.toString()}};var token_dis={};var token_exec={};function execIN(node,env){if(!node||node.__oni_dis!=token_dis){return node}return node(token_exec,env)}exports.exec=function(node,argsobj,thisobj,filename){var rv=execIN(node,{aobj:argsobj,tobj:thisobj||this,file:filename});if(is_cfx(rv))return rv.mapToJS();return rv};exports.exnm=function(node,argsobj,thisobj,filename){return execIN(node,{aobj:argsobj,tobj:thisobj||this,file:filename})};function makeINCtor(inst){return function(){var ndata=arguments;var dis=function(){return inst.exec(ndata,arguments[1])};dis.__oni_dis=token_dis;return dis}}var I_nblock={exec:function(ndata,args){try{return (ndata[0]).call(args.tobj,args.aobj)}catch(e){return new CFException("t",e,ndata[1],args.file)}}};exports.Nblock=makeINCtor(I_nblock);function EF_Seq(ndata,args){this.ndata=ndata;this.args=args;this.swallow_r=ndata[0]&1;this.sc=ndata[0]&(2|4)}EF_Seq.prototype=new EF_Base();EF_Seq.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,idx)}else if(is_cfx(val)){return this.returnToParent(val)}else{while(idx<this.ndata.length){if(this.sc&&idx>1){if(this.sc==2){if(val)break}else{if(!val)break}}this.child_frame=null;val=execIN(this.ndata[idx],this.args);if(this.aborted){if(is_ef(val))val=val.abort();break}if(++idx==this.ndata.length||is_cfx(val)){break}if(is_ef(val)){this.setChildFrame(val,idx);return this}}return this.returnToParent(val)}};EF_Seq.prototype.abort=function(){if(!this.child_frame){this.aborted=true;return this}else return this.child_frame.abort()};var I_seq={exec:function(ndata,args){return (new EF_Seq(ndata,args)).cont(1)}};exports.Seq=makeINCtor(I_seq);function testIsFunction(f){if(typeof f=="function")return true;return ((""+f).indexOf("[")!=-1)}function EF_Fcall(ndata,args){this.ndata=ndata;this.args=args;this.i=2;this.pars=[]}EF_Fcall.prototype=new EF_Base();EF_Fcall.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,idx)}else if(is_cfx(val)){return this.returnToParent(val)}else if(idx==2){return this.returnToParent(this.o)}else{if(idx==1){if(this.i==3)this.l=val;else this.pars.push(val)}var rv;while(this.i<this.ndata.length){rv=execIN(this.ndata[this.i],this.args);++this.i;if(is_cfx(rv))return this.returnToParent(rv);if(is_ef(rv)){this.setChildFrame(rv,1);return this}if(this.i==3)this.l=rv;else this.pars.push(rv)}try{switch(this.ndata[0]){case 0:if(typeof this.l=="function")rv=this.l.apply(this.args.tobj,this.pars);else if(!testIsFunction(this.l)){rv=new CFException("t",new Error("'"+this.l+"' is not a function"),this.ndata[1],this.args.file)}else{var command="this.l(";for(var i=0;i<this.pars.length;++i){if(i)command+=",";command+="this.pars["+i+"]"}command+=")";rv=eval(command)}break;case 1:if(!this.l[0]){rv=new CFException("t",new Error("'"+this.l[1]+"' on '"+this.l[0]+"' is not a function"),this.ndata[1],this.args.file)}else if(typeof this.l[0][this.l[1]]=="function"){rv=this.l[0][this.l[1]].apply(this.l[0],this.pars)}else if((UA!="msie")&&!testIsFunction(this.l[0][this.l[1]])){rv=new CFException("t",new Error("'"+this.l[0][this.l[1]]+"' is not a function"),this.ndata[1],this.args.file)}else{var command="this.l[0][this.l[1]](";for(var i=0;i<this.pars.length;++i){if(i)command+=",";command+="this.pars["+i+"]"}command+=")";rv=eval(command)}break;case 2:var ctor=this.l;if(!testIsFunction(ctor)){rv=new CFException("t",new Error("'"+ctor+"' is not a function"),this.ndata[1],this.args.file)}else if(ctor==Array||ctor==Boolean||ctor==Date||ctor==Error||ctor==EvalError||ctor==Function||ctor==Math||ctor==Number||ctor==Object||ctor==RangeError||ctor==ReferenceError||ctor==RegExp||ctor==String||ctor==SyntaxError||ctor==TypeError||ctor==URIError||ctor==XMLHttpRequest||!ctor.apply){var command="new ctor(";for(var i=0;i<this.pars.length;++i){if(i)command+=",";command+="this.pars["+i+"]"}command+=")";rv=eval(command)}else{var f=new Function();f.prototype=ctor.prototype;this.o=new f();rv=ctor.apply(this.o,this.pars);if(is_ef(rv)){this.setChildFrame(rv,2);return this}else rv=this.o}break;default:rv=new CFException("i","Invalid Fcall mode")}}catch(e){rv=new CFException("t",e,this.ndata[1],this.args.file)}return this.returnToParent(rv)}};var I_fcall={exec:function(ndata,args){return (new EF_Fcall(ndata,args)).cont(0)}};exports.Fcall=makeINCtor(I_fcall);function EF_If(ndata,args){this.ndata=ndata;this.args=args}EF_If.prototype=new EF_Base();EF_If.prototype.cont=function(idx,val){switch(idx){case 0:val=execIN(this.ndata[0],this.args);case 1:if(is_cfx(val))break;if(is_ef(val)){this.setChildFrame(val,1);return this}if(val)val=execIN(this.ndata[1],this.args);else val=execIN(this.ndata[2],this.args);break;default:val=new CFException("i","invalid state in EF_If")}return this.returnToParent(val)};var I_if={exec:function(ndata,args){return (new EF_If(ndata,args)).cont(0)}};exports.If=makeINCtor(I_if);var Default={};exports.Default=Default;function EF_Switch(ndata,args){this.ndata=ndata;this.args=args;this.phase=0}EF_Switch.prototype=new EF_Base();EF_Switch.prototype.swallow_bc=true;EF_Switch.prototype.cont=function(idx,val){switch(this.phase){case 0:if(idx==0){val=execIN(this.ndata[0],this.args)}if(is_cfx(val))return this.returnToParent(val);if(is_ef(val)){this.setChildFrame(val,1);return this}this.phase=1;this.testval=val;idx=-1;case 1:while(true){if(idx>-1){if(is_cfx(val))return this.returnToParent(val);if(is_ef(val)){this.setChildFrame(val,idx);return this}else if(val==Default||val==this.testval)break}if(++idx>=this.ndata[1].length)return this.returnToParent(null);val=execIN(this.ndata[1][idx][0],this.args)}this.phase=2;val=0;case 2:while(idx<this.ndata[1].length){if(is_ef(val)){this.setChildFrame(val,idx);return this}if(is_cfx(val)){return this.returnToParent(val)}val=execIN(this.ndata[1][idx][1],this.args);++idx}if(is_ef(val))val.swallow_bc=true;return this.returnToParent(val);default:throw "Invalid phase in Switch SJS node"}};var I_switch={exec:function(ndata,args){return (new EF_Switch(ndata,args)).cont(0)}};exports.Switch=makeINCtor(I_switch);function EF_Try(ndata,args){this.ndata=ndata;this.args=args;this.state=0}EF_Try.prototype=new EF_Base();EF_Try.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,this.state)}else{switch(this.state){case 0:this.state=1;val=execIN(this.ndata[1],this.args);if(is_ef(val)){this.setChildFrame(val);return this}case 1:this.state=2;if(!this.aborted&&this.ndata[2]&&((is_cfx(val)&&val.type=="t")||this.ndata[0]&1)){try{var v;if(this.ndata[0]&1){v=is_cfx(val)?[val.val,true]:[val,false]}else v=val.val;val=this.ndata[2].apply(this.args.tobj,[this.args.aobj,v])}catch(e){val=new CFException("t",e)}if(is_ef(val)){this.setChildFrame(val);return this}}case 2:this.state=3;this.rv=val;this.rv=val;if(this.aborted&&this.ndata[4]){val=execIN(this.ndata[4],this.args);if(is_ef(val)){this.setChildFrame(val);return this}}case 3:this.state=4;if(this.ndata[3]){val=execIN(this.ndata[3],this.args);if(is_ef(val)){this.setChildFrame(val);return this}}case 4:if(is_cfx(this.rv)&&!is_cfx(val)){val=this.rv}break;default:val=new CFException("i","invalid state in CF_Try")}return this.returnToParent(val)}};EF_Try.prototype.abort=function(){delete this.parent;this.aborted=true;if(this.state!=4){var val=this.child_frame.abort();if(is_ef(val)){this.setChildFrame(val)}else{if(this.cont(0,undefined)!=this)return}}return this};var I_try={exec:function(ndata,args){return (new EF_Try(ndata,args)).cont(0)}};exports.Try=makeINCtor(I_try);function EF_Loop(ndata,args){this.ndata=ndata;this.args=args}EF_Loop.prototype=new EF_Base();EF_Loop.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,idx)}else{while(true){switch(idx){case 0:if(is_cfx(val)){return this.returnToParent(val)}val=execIN(this.ndata[1],this.args);if(is_ef(val)){this.setChildFrame(val,1);return this}case 1:if(!val||is_cfx(val)){return this.returnToParent(val)}val=execIN(this.ndata[2],this.args);if(is_ef(val)){this.setChildFrame(val,2);return this}case 2:if(is_cfx(val)){if(val.type=="b"){val=undefined}else if(val.type=="c"){val=undefined;idx=2;break}return this.returnToParent(val)}val=execIN(this.ndata[3],this.args);if(is_ef(val)){this.setChildFrame(val,0);return this}idx=0;break;default:return this.returnToParent(new CFException("i","invalid state in EF_Loop"))}}}};var I_loop={exec:function(ndata,args){return (new EF_Loop(ndata,args)).cont(ndata[0],true)}};exports.Loop=makeINCtor(I_loop);function EF_ForIn(ndata,args){this.ndata=ndata;this.args=args}EF_ForIn.prototype=new EF_Base();EF_ForIn.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,idx)}else{if(idx==0){val=execIN(this.ndata[0],this.args);if(is_ef(val)){this.setChildFrame(val,1);return this}idx=1}if(idx==1){if(is_cfx(val))return this.returnToParent(val);for(var x in val){if(this.remainingX===undefined){val=this.ndata[1].apply(this.args.tobj,[this.args.aobj,x]);if(is_cfx(val)){if(val.type=="b"){val=undefined}else if(val.type=="c"){val=undefined;continue}return this.returnToParent(val)}if(is_ef(val))this.remainingX=[]}else this.remainingX.push(x)}if(is_ef(val)){if(!this.remainingX.length){val.swallow_bc=true;return this.returnToParent(val)}else{this.setChildFrame(val,2);return this}}return this.returnToParent(val)}if(idx==2){while(1){if(is_cfx(val)){if(val.type=="b"){val=undefined}else if(val.type=="c"){val=undefined;if(this.remainingX.length)continue}return this.returnToParent(val)}if(!this.remainingX.length){if(is_ef(val))val.swallow_bc=true;return this.returnToParent(val)}val=this.ndata[1].apply(this.args.tobj,[this.args.aobj,this.remainingX.shift()]);if(is_ef(val)){this.setChildFrame(val,2);return this}}}}};var I_forin={exec:function(ndata,args){return (new EF_ForIn(ndata,args)).cont(0)}};exports.ForIn=makeINCtor(I_forin);var I_cfe={exec:function(ndata,args){var cfe=new CFException(ndata[0],ndata[1]);return cfe}};exports.Cfe=makeINCtor(I_cfe);function EF_Par(ndata,args){this.ndata=ndata;this.args=args;this.pending=0;this.children=new Array(this.ndata.length)}EF_Par.prototype=new EF_Base();EF_Par.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,idx)}else{if(idx==-1){for(var i=0;i<this.ndata.length;++i){val=execIN(this.ndata[i],this.args);if(this.aborted){if(is_ef(val)){++this.pending;this.setChildFrame(val,i);return this.abortInner()}return this.pendingCFE}else if(is_ef(val)){++this.pending;this.setChildFrame(val,i)}else if(is_cfx(val)){this.pendingCFE=val;return this.abortInner()}}}else{--this.pending;this.children[idx]=undefined;if(is_cfx(val)&&!this.aborted){this.pendingCFE=val;return this.returnToParent(this.abortInner())}}if(this.pending<2){if(!this.pendingCFE){if(this.pending==0)return this.returnToParent(val);for(var i=0;i<this.children.length;++i)if(this.children[i])return this.returnToParent(this.children[i]);return this.returnToParent(new CFException("i","invalid state in Par"))}else{if(this.pending==0)return this.returnToParent(this.pendingCFE)}}this.async=true;return this}};EF_Par.prototype.abort=function(){delete this.parent;if(this.aborted){delete this.pendingCFE;return this}return this.abortInner()};EF_Par.prototype.abortInner=function(){this.aborted=true;for(var i=0;i<this.children.length;++i)if(this.children[i]){var val=this.children[i].abort();if(is_ef(val))this.setChildFrame(val,i);else{--this.pending;this.children[i]=undefined}}if(!this.pending)return this.pendingCFE;this.async=true;return this};EF_Par.prototype.setChildFrame=function(ef,idx){this.children[idx]=ef;ef.parent=this;ef.parent_idx=idx};var I_par={exec:function(ndata,args){return (new EF_Par(ndata,args)).cont(-1)}};exports.Par=makeINCtor(I_par);function EF_Alt(ndata,args){this.ndata=ndata;this.args=args;this.pending=0;this.children=new Array(this.ndata.length)}EF_Alt.prototype=new EF_Base();EF_Alt.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,idx)}else{if(idx==-1){for(var i=0;i<this.ndata.length;++i){val=execIN(this.ndata[i],this.args);if(this.aborted){if(is_ef(val)){++this.pending;this.setChildFrame(val,i);return this.abortInner()}return this.pendingRV}else if(is_ef(val)){++this.pending;this.setChildFrame(val,i)}else{this.pendingRV=val;return this.abortInner()}}}else{--this.pending;this.children[idx]=undefined;if(!this.aborted){this.pendingRV=val;return this.returnToParent(this.abortInner())}if(this.pending==0)return this.returnToParent(this.pendingRV)}this.async=true;return this}};EF_Alt.prototype.abort=function(){delete this.parent;if(this.aborted){delete this.pendingRV;return this}return this.abortInner()};EF_Alt.prototype.abortInner=function(){this.aborted=true;for(var i=0;i<this.children.length;++i)if(this.children[i]){var val=this.children[i].abort();if(is_ef(val))this.setChildFrame(val,i);else{--this.pending;this.children[i]=undefined}}if(!this.pending)return this.pendingRV;this.async=true;return this};EF_Alt.prototype.setChildFrame=function(ef,idx){this.children[idx]=ef;ef.parent=this;ef.parent_idx=idx};var I_alt={exec:function(ndata,args){return (new EF_Alt(ndata,args)).cont(-1)}};exports.Alt=makeINCtor(I_alt);function EF_Suspend(ndata,args){this.ndata=ndata;this.args=args}EF_Suspend.prototype=new EF_Base();EF_Suspend.prototype.cont=function(idx,val){if(is_ef(val)){this.setChildFrame(val,idx)}else{switch(idx){case 0:try{var ef=this;var resumefunc=function(){ef.cont(2,arguments)};val=this.ndata[0].apply(this.args.tobj,[this.args.aobj,resumefunc])}catch(e){val=new CFException("t",e)}if(this.returning){if(is_ef(val)){this.setChildFrame(val,null);val=this.abort();if(is_ef(val)){this.setChildFrame(val,3);this.async=true;return this}}return this.cont(3,null)}if(is_ef(val)){this.setChildFrame(val,1);return this}case 1:if(is_cfx(val)){this.returning=true;break}this.suspendCompleted=true;this.async=true;return this;case 2:if(this.returning){return}this.returning=true;if(is_cfx(val)){val=new CFException("i","Suspend: Resume function threw ("+val.toString()+")");break}this.retvals=val;if(!this.suspendCompleted){if(!this.child_frame){this.returning=true;return}else{val=this.abort();if(is_ef(val)){this.setChildFrame(val,3);return this}}}case 3:try{this.ndata[1].apply(this.args,this.retvals);val=undefined}catch(e){val=new CFException("i","Suspend: Return function threw ("+e+")")}break;default:val=new CFException("i","Invalid state in Suspend ("+idx+")")}return this.returnToParent(val)}};EF_Suspend.prototype.abort=function(){this.returning=true;if(!this.suspendCompleted)return this.child_frame.abort()};var I_sus={exec:function(ndata,args){return (new EF_Suspend(ndata,args)).cont(0)}};exports.Suspend=makeINCtor(I_sus);function dummy(){}exports.Hold=function(){if(!arguments.length)return {__oni_ef:token_ef,abort:dummy};var sus={__oni_ef:token_ef,abort:function(){sus=null;window.clearTimeout(this.co)}};sus.co=setTimeout(function(){if(sus&&sus.parent)sus.parent.cont(sus.parent_idx,undefined)},arguments[0]);return sus};exports.Spawn=function(f){window.setTimeout(f,0)};exports.Throw=function(exp,line,file){return new CFException("t",exp,line,file)};exports.Arr=function(){return Array.prototype.slice.call(arguments,0)};exports.Obj=function(){var obj=new Object();for(var i=0;i<arguments[0].length;++i)obj[arguments[0][i]]=arguments[i+1];return obj};exports.Return=function(exp){return new CFException("r",exp)};exports.With=function(exp,f,argobj){return f(argobj,exp)};exports.infix={'+':function(a,b){return a+b},'-':function(a,b){return a-b},'*':function(a,b){return a*b},'/':function(a,b){return a/b},'%':function(a,b){return a%b},'<<':function(a,b){return a<<b},'>>':function(a,b){return a>>b},'>>>':function(a,b){return a>>>b},'<':function(a,b){return a<b},'>':function(a,b){return a>b},'<=':function(a,b){return a<=b},'>=':function(a,b){return a>=b},'==':function(a,b){return a==b},'!=':function(a,b){return a!=b},'===':function(a,b){return a===b},'!==':function(a,b){return a!==b},'&':function(a,b){return a&b},'^':function(a,b){return a^b},'|':function(a,b){return a|b},',':function(a,b){return a,b},'instanceof':function(a,b){return a instanceof b},'in':function(a,b){return a in b}};exports.modules={};exports.modsrc={};})(__oni_rt);(function(exports){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var ua=navigator.userAgent.toLowerCase();if(ua.indexOf(" chrome/")>=0||ua.indexOf(" firefox/")>=0||ua.indexOf(' gecko/')>=0){var StringMaker=function(){this.str="";this.length=0;this.append=function(s){this.str+=s;this.length+=s.length};this.prepend=function(s){this.str=s+this.str;this.length+=s.length};this.toString=function(){return this.str}}}else{var StringMaker=function(){this.parts=[];this.length=0;this.append=function(s){this.parts.push(s);this.length+=s.length};this.prepend=function(s){this.parts.unshift(s);this.length+=s.length};this.toString=function(){return this.parts.join('')}}}exports.encode=function(input){var output=new StringMaker();var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;while(i<input.length){chr1=input.charCodeAt(i++ );chr2=input.charCodeAt(i++ );chr3=input.charCodeAt(i++ );enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output.append(keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4))}return output.toString()};exports.decode=function(input){var output=new StringMaker();var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=keyStr.indexOf(input.charAt(i++ ));enc2=keyStr.indexOf(input.charAt(i++ ));enc3=keyStr.indexOf(input.charAt(i++ ));enc4=keyStr.indexOf(input.charAt(i++ ));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output.append(String.fromCharCode(chr1));if(enc3!=64){output.append(String.fromCharCode(chr2))}if(enc4!=64){output.append(String.fromCharCode(chr3))}}return output.toString()};})(__oni_rt.modules['base64']={});(function(exports){function push_decl_scope(pctx){pctx.decl_scopes.push({vars:[],funs:"",fscoped_ctx:0})}function pop_decl_scope(pctx){var decls=pctx.decl_scopes.pop();var rv="";if(decls.vars.length)rv+="var "+decls.vars.join(",")+";";rv+=decls.funs;return rv}function top_decl_scope(pctx){return pctx.decl_scopes[pctx.decl_scopes.length-1]}function push_stmt_scope(pctx){pctx.stmt_scopes.push({seq:[]})}function pop_stmt_scope(pctx,pre,post){var seq=pctx.stmt_scopes.pop().seq;var rv="";if(seq.length){if(pre)rv+=pre;for(var i=0;i<seq.length;++i){var v=seq[i].val();if(v.length)rv+=","+v}if(post)rv+=post}return rv}function top_stmt_scope(pctx){return pctx.stmt_scopes[pctx.stmt_scopes.length-1]}function begin_script(pctx){if(pctx.filename)pctx.filename=pctx.filename.replace(/'/g,"\\'");if(pctx.scopes!==undefined)throw "Internal parser error: Nested script";pctx.decl_scopes=[];pctx.stmt_scopes=[];push_decl_scope(pctx);push_stmt_scope(pctx)}function add_stmt(stmt,pctx){if(!stmt)return;if(stmt.is_compound_stmt){for(var i=0;i<stmt.stmts.length;++i)add_stmt(stmt.stmts[i],pctx);return}else if(stmt.is_var_decl){top_decl_scope(pctx).vars.push(stmt.decl());if(stmt.is_empty)return}else if(stmt.is_fun_decl){top_decl_scope(pctx).funs+=stmt.decl();return}var seq=top_stmt_scope(pctx).seq;if(stmt.is_nblock()){var last=seq.length?seq[seq.length-1]:null;if(!last||!last.is_nblock_seq){last=new ph_nblock_seq();seq.push(last)}last.stmts.push(stmt)}else seq.push(stmt)}function end_script(pctx){var rv="";rv+=pop_decl_scope(pctx);rv+=pop_stmt_scope(pctx,"__oni_rt.exec(__oni_rt.Seq("+0,"), this.arguments, this,'"+pctx.filename+"');");return rv}function ph_block(seq){this.seq=seq}ph_block.prototype={is_nblock:function(){return false},val:function(){return this.seq.length?this.seq:"0"}};function ph_switch(exp,clauses){this.exp=exp;this.clauses=clauses}ph_switch.prototype={is_nblock:function(){return false},val:function(){var clauses="["+this.clauses.join(",")+"]";return "__oni_rt.Switch("+this.exp.val()+","+clauses+")"}};function ph_fun_exp(fname,pars,body,pctx){this.code="function "+fname+"("+pars.join(",")+"){"+body+"}"}ph_fun_exp.prototype={is_nblock:function(){return true},nblock_val:function(){return this.code},val:function(){return this.code}};function gen_fun_decl(fname,pars,body,pctx){if(top_decl_scope(pctx).fscoped_ctx){return gen_var_decl([[fname,new ph_fun_exp("",pars,body,pctx)]],pctx)}else return new ph_fun_decl(fname,pars,body,pctx)}function ph_fun_decl(fname,pars,body,pctx){this.code="function "+fname+"("+pars.join(",")+"){"+body+"}"}ph_fun_decl.prototype={is_fun_decl:true,decl:function(){return this.code}};function nblock_val_to_val(v,r,l){var rv="__oni_rt.Nblock(function(arguments){";if(r)rv+="return ";rv+=v;return rv+"},"+l+")"}function ph_nblock_seq(){this.stmts=[]}ph_nblock_seq.prototype={is_nblock_seq:true,val:function(){var rv="";for(var i=0;i<this.stmts.length-1;++i){rv+=this.stmts[i].nblock_val()}if(this.stmts[i].is_expstmt)rv+="return ";rv+=this.stmts[i].nblock_val();return nblock_val_to_val(rv,false,this.stmts[0].line)}};function ph_compound_stmt(pctx){this.stmts=[];this.pctx=pctx}ph_compound_stmt.prototype={is_compound_stmt:true,toBlock:function(){push_stmt_scope(this.pctx);add_stmt(this,this.pctx);return new ph_block(pop_stmt_scope(this.pctx,"__oni_rt.Seq("+0,")"))}};function ph_exp_stmt(exp,pctx){this.exp=exp;this.line=this.exp.line}ph_exp_stmt.prototype={is_expstmt:true,is_nblock:function(){return this.exp.is_nblock()},nblock_val:function(){return this.exp.nblock_val()+";"},val:function(){return this.exp.val()}};function gen_var_compound(decls,pctx){var rv=new ph_compound_stmt(pctx);for(var i=0;i<decls.length;++i)rv.stmts.push(new ph_var_decl(decls[i],pctx));return rv}function gen_var_decl(decls,pctx){return gen_var_compound(decls,pctx).toBlock()}function ph_var_decl(d,pctx){this.d=d;this.is_empty=this.d.length<2;this.line=pctx.line}ph_var_decl.prototype={is_var_decl:true,decl:function(){return this.d[0]},is_nblock:function(){;return this.d[1].is_nblock()},nblock_val:function(){;return this.d[0]+"="+this.d[1].nblock_val()+";"},val:function(){;return "__oni_rt.Fcall(0,"+this.line+",function(_oniX, arguments){return "+this.d[0]+"=_oniX;},"+this.d[1].val()+",__oni_rt.Nblock(function(a){return a;}))"}};function ph_if(t,c,a,pctx){this.t=t;this.c=c;this.a=a}ph_if.prototype={is_nblock:function(){return false},val:function(){var c=this.c?this.c.val():"0";var rv="__oni_rt.If("+this.t.val()+","+c;if(this.a)rv+=","+this.a.val();return rv+")"}};function ph_try(block,crf,pctx){this.block=block;this.crf=crf;this.file=pctx.filename}ph_try.prototype={is_nblock:function(){return false},val:function(){var tb=this.block.val();if(!tb.length)tb="0";var rv="__oni_rt.Try("+((this.crf[0]&&this.crf[0][2])?1:0);rv+=","+tb;if(this.crf[0]){var cb=this.crf[0][1].val();rv+=",function(arguments,"+this.crf[0][0]+"){";if(cb.length)rv+="return __oni_rt.exnm("+cb+",arguments,this,'"+this.file+"')";rv+="}"}else rv+=",0";if(this.crf[2]){var fb=this.crf[2].val();if(!fb.length)fb="0";rv+=","+fb}else rv+=",0";if(this.crf[1]){var rb=this.crf[1].val();if(rb.length)rv+=","+rb}return rv+")"}};function ph_throw(exp,pctx){this.exp=exp;this.line=exp.line;this.file=pctx.filename}ph_throw.prototype={is_nblock:function(){return this.exp.is_nblock()},nblock_val:function(){return "throw "+this.exp.nblock_val()+";"},val:function(){return "__oni_rt.Fcall(0,"+this.line+",__oni_rt.Throw,"+this.exp.val()+","+this.line+",'"+this.file+"')"}};function ph_return(exp,pctx){this.line=pctx.line;this.exp=exp}ph_return.prototype={is_nblock:function(){return false},val:function(){var v=this.exp?","+this.exp.val():"";return "__oni_rt.Fcall(0,"+this.line+",__oni_rt.Return"+v+")"}};function ph_cfe(f,lbl){this.f=f;this.lbl=lbl}ph_cfe.prototype={is_nblock:function(){return false},val:function(){var l=this.lbl?'"'+this.lbl+'"':"";var rv='__oni_rt.Cfe("'+this.f+'"';if(this.lbl)rv+=',"'+this.lbl+'"';return rv+")"}};function gen_for(init_exp,decls,test_exp,inc_exp,body,pctx){var rv;if(init_exp||decls){if(decls)rv=gen_var_compound(decls,pctx);else rv=new ph_compound_stmt(pctx);if(init_exp)rv.stmts.push(init_exp);rv.stmts.push(new ph_loop(0,test_exp,body,inc_exp));rv=rv.toBlock()}else rv=new ph_loop(0,test_exp,body,inc_exp);return rv}function ph_loop(init_state,test_exp,body,inc_exp){this.init_state=init_state;this.test_exp=test_exp;this.inc_exp=inc_exp;this.body=body}ph_loop.prototype={is_nblock:function(){return false},val:function(){var test=this.test_exp?this.test_exp.val():"1";var body=this.body?this.body.val():"0";var rv="__oni_rt.Loop("+this.init_state+","+test+","+body;if(this.inc_exp)rv+=","+this.inc_exp.val();return rv+")"}};function gen_for_in(lhs_exp,decl,obj_exp,body,pctx){var rv;if(decl){rv=gen_var_compound([decl],pctx);rv.stmts.push(new ph_for_in(new ph_identifier(decl[0],pctx),obj_exp,body,pctx));rv=rv.toBlock()}else rv=new ph_for_in(lhs_exp,obj_exp,body,pctx);return rv}function ph_for_in(lhs,obj,body,pctx){this.lhs=lhs;this.obj=obj;this.body=body;this.pctx=pctx}ph_for_in.prototype={is_nblock:function(){return false},val:function(){var rv="__oni_rt.ForIn("+this.obj.val();rv+=",function(arguments, _oniY) { return __oni_rt.exnm(__oni_rt.Seq("+0+",";rv+=(new ph_assign_op(this.lhs,"=",new ph_identifier("_oniY",this.pctx),this.pctx)).val();if(this.body)rv+=","+this.body.val();return rv+"), arguments, this,'"+this.pctx.filename+"')})"}};function ph_with(exp,body,pctx){this.exp=exp;this.body=body;this.line=this.exp.line;this.file=pctx.filename}ph_with.prototype={is_nblock:function(){return this.exp.is_nblock()&&this.body.is_nblock()},nblock_val:function(){return "with("+this.exp.nblock_val()+")"+this.body.nblock_val()},val:function(){var rv="__oni_rt.Fcall(0,"+this.line+",__oni_rt.With,"+this.exp.val()+", function(arguments, _oniZ){with (_oniZ) return __oni_rt.exnm("+this.body.val()+",arguments,this,'"+this.file+"')})";return rv}};function ph_literal(value,pctx){this.value=value}ph_literal.prototype={is_nblock:function(){return true},nblock_val:function(){return this.value},val:function(){return this.value}};function ph_infix_op(left,id,right,pctx){this.left=left;this.id=id;this.right=right;this.line=pctx.line}ph_infix_op.prototype={is_nblock:function(){return this.left.is_nblock()&&this.right.is_nblock()},nblock_val:function(){return this.left.nblock_val()+" "+this.id+" "+this.right.nblock_val()},val:function(){if(this.is_nblock()){return nblock_val_to_val(this.nblock_val(),true,this.line)}else if(this.id=="||"){return "__oni_rt.Seq("+2+","+this.left.val()+","+this.right.val()+")"}else if(this.id=="&&"){return "__oni_rt.Seq("+4+","+this.left.val()+","+this.right.val()+")"}else return "__oni_rt.Fcall(0,"+this.line+",__oni_rt.infix['"+this.id+"'],"+this.left.val()+","+this.right.val()+")"}};function ph_assign_op(left,id,right,pctx){if(!left.is_ref&&!left.is_id)throw "Invalid left side in assignment";this.left=left;this.id=id;this.right=right;this.line=pctx.line}ph_assign_op.prototype={is_nblock:function(){return this.left.is_nblock()&&this.right.is_nblock()},nblock_val:function(){return this.left.nblock_val()+this.id+this.right.nblock_val()},val:function(){var rv;if(this.is_nblock()){rv=nblock_val_to_val(this.nblock_val(),true,this.line)}else if(this.left.is_ref){rv="__oni_rt.Fcall(0,"+this.line+",function(l, r){return l[0][l[1]]"+this.id+"r;},"+this.left.ref()+","+this.right.val()+")"}else{rv="__oni_rt.Fcall(0,"+this.line+",function(_oniX, arguments){return "+this.left.nblock_val()+this.id+"_oniX;},"+this.right.val()+",__oni_rt.Nblock(function(a){return a;}))"}return rv}};function ph_prefix_op(id,right,pctx){this.id=id;this.right=right;this.line=pctx.line}ph_prefix_op.prototype={is_nblock:function(){return this.right.is_nblock()},nblock_val:function(){return this.id+" "+this.right.nblock_val()},val:function(){var rv;if(this.right.is_nblock()){rv=nblock_val_to_val(this.nblock_val(),true,this.line)}else if(this.right.is_ref){rv="__oni_rt.Fcall(0,"+this.line+",function(r){return "+this.id+" r[0][r[1]]},"+this.right.ref()+")"}else{rv="__oni_rt.Fcall(0,"+this.line+",function(r){return "+this.id+" r},"+this.right.val()+")"}return rv}};function ph_postfix_op(left,id,pctx){if(!left.is_ref&&!left.is_id)throw "Invalid argument for postfix op '"+id+"'";this.left=left;this.id=id;this.line=pctx.line}ph_postfix_op.prototype={is_nblock:function(){return this.left.is_nblock()},nblock_val:function(){return this.left.nblock_val()+this.id+" "},val:function(){var rv;if(this.left.is_nblock()){rv=nblock_val_to_val(this.nblock_val(),true,this.line)}else if(this.right.is_ref){rv="__oni_rt.Fcall(0,"+this.line+",function(l){return l[0][l[1]]"+this.id+"},"+this.left.ref()+")"}return rv}};function gen_identifier(value,pctx){if(value=="hold"){var rv=new ph_literal('__oni_rt.Hold',pctx);rv.is_id=true;return rv}else if(value=="spawn"){var rv=new ph_literal('__oni_rt.Spawn',pctx);rv.is_id=true;return rv}return new ph_identifier(value,pctx)}function ph_identifier(value,pctx){this.value=value;this.line=pctx.line}ph_identifier.prototype={is_nblock:function(){return true},is_id:true,nblock_val:function(){return this.value},val:function(){return nblock_val_to_val(this.value,true,this.line)}};function is_nblock_arr(arr){for(var i=0;i<arr.length;++i)if(!arr[i].is_nblock())return false;return true}function ph_fun_call(l,args,pctx){this.l=l;this.args=args;this.nblock_form=l.is_nblock()&&is_nblock_arr(args);this.line=pctx.line}ph_fun_call.prototype={is_nblock:function(){return false},nblock_val:function(){throw "Internal compiler error: ph_fun_call.nblock_val"},val:function(){var rv;if(this.nblock_form){rv=this.l.nblock_val()+"(";for(var i=0;i<this.args.length;++i){if(i)rv+=",";rv+=this.args[i].nblock_val()}return nblock_val_to_val(rv+")",true,this.line)}else if(this.l.is_ref){rv="__oni_rt.Fcall(1,"+this.line+","+this.l.ref()}else{rv="__oni_rt.Fcall(0,"+this.line+","+this.l.val()}for(var i=0;i<this.args.length;++i){rv+=","+this.args[i].val()}rv+=")";return rv}};function ph_dot_accessor(l,name,pctx){this.l=l;this.name=name;this.line=pctx.line}ph_dot_accessor.prototype={is_ref:true,is_nblock:function(){return this.l.is_nblock()},nblock_val:function(){return this.l.nblock_val()+"."+this.name},val:function(){return "__oni_rt.Fcall(0,"+this.line+",function(l){return l."+this.name+";},"+this.l.val()+")"},ref:function(){return "__oni_rt.Fcall(0,"+this.line+",function(l){return [l,'"+this.name+"'];},"+this.l.val()+")"}};function ph_idx_accessor(l,idxexp,pctx){this.l=l;this.idxexp=idxexp;this.line=pctx.line}ph_idx_accessor.prototype={is_ref:true,is_nblock:function(){return this.l.is_nblock()&&this.idxexp.is_nblock()},nblock_val:function(){return this.l.nblock_val()+"["+this.idxexp.nblock_val()+"]"},val:function(){return "__oni_rt.Fcall(0,"+this.line+",function(l, idx){return l[idx];},"+this.l.val()+","+this.idxexp.val()+")"},ref:function(){return "__oni_rt.Fcall(0,"+this.line+",function(l, idx){return [l, idx];},"+this.l.val()+","+this.idxexp.val()+")"}};function ph_group(e){this.e=e}ph_group.prototype={is_nblock:function(){return this.e.is_nblock()},nblock_val:function(){return "("+this.e.nblock_val()+")"},val:function(){return this.e.val()}};function ph_arr_lit(elements,pctx){this.elements=elements;this.line=pctx.line}ph_arr_lit.prototype={is_nblock:function(){for(var i=0;i<this.elements.length;++i)if(!this.elements[i].is_nblock())return false;return true},nblock_val:function(){var rv="[";for(var i=0;i<this.elements.length;++i){if(i)rv+=",";rv+=this.elements[i].nblock_val()}return rv+"]"},val:function(){var rv="__oni_rt.Fcall(0,"+this.line+",__oni_rt.Arr";for(var i=0;i<this.elements.length;++i){rv+=","+this.elements[i].val()}return rv+")"}};function ph_obj_lit(props,pctx){this.props=props;this.line=pctx.line}ph_obj_lit.prototype={is_nblock:function(){for(var i=0;i<this.props.length;++i)if(!this.props[i][2].is_nblock())return false;return true},nblock_val:function(){var rv="{";for(var i=0;i<this.props.length;++i){if(i!=0)rv+=",";rv+=this.props[i][1]+":"+this.props[i][2].nblock_val()}return rv+"}"},val:function(){var rv="__oni_rt.Fcall(0,"+this.line+",__oni_rt.Obj, [";for(var i=0;i<this.props.length;++i){if(i)rv+=",";var name=this.props[i][1];if(name.charAt(0)!="'"&&name.charAt(0)!='"')name='"'+name+'"';rv+=name}rv+="]";for(var i=0;i<this.props.length;++i){rv+=","+this.props[i][2].val()}return rv+")"}};function ph_conditional(t,c,a,pctx){this.t=t;this.c=c;this.a=a}ph_conditional.prototype={is_nblock:function(){return this.t.is_nblock()&&this.c.is_nblock()&&this.a.is_nblock()},nblock_val:function(){return this.t.nblock_val()+"?"+this.c.nblock_val()+":"+this.a.nblock_val()},val:function(){return "__oni_rt.If("+this.t.val()+","+this.c.val()+","+this.a.val()+")"}};function ph_new(exp,args){this.exp=exp;this.args=args;this.line=exp.line}ph_new.prototype={is_nblock:function(){return false},val:function(){var rv="__oni_rt.Fcall(2,"+this.line+","+this.exp.val();for(var i=0;i<this.args.length;++i){rv+=","+this.args[i].val()}rv+=")";return rv}};function gen_waitfor_andor(op,blocks,crf,pctx){if(crf[0]||crf[1]||crf[2])return new ph_try(new ph_par_alt(op,blocks),crf,pctx);else return new ph_par_alt(op,blocks)}function ph_par_alt(op,blocks){this.op=op;this.blocks=blocks}ph_par_alt.prototype={is_nblock:function(){return false},val:function(){var rv="__oni_rt.";if(this.op=="and")rv+="Par(";else rv+="Alt(";for(var i=0;i<this.blocks.length;++i){var b=this.blocks[i].val();if(!b.length)b="0";if(i)rv+=",";rv+=b}return rv+")"}};function gen_suspend(has_var,decls,block,crf,pctx){var rv;if(has_var){rv=gen_var_compound(decls,pctx);rv.stmts.push(gen_suspend_inner(decls,block,crf,pctx));rv=rv.toBlock()}else rv=gen_suspend_inner(decls,block,crf,pctx);return rv}function gen_suspend_inner(decls,block,crf,pctx){var wrapped=(crf[0]||crf[1]||crf[2]);var rv=new ph_suspend(decls,block,wrapped,pctx);if(wrapped)rv=new ph_suspend_wrapper((new ph_try(rv,crf,pctx)).val(),pctx);return rv}function ph_suspend(decls,block,wrapped,pctx){this.decls=decls;this.block=block;this.wrapped=wrapped;this.file=pctx.filename}ph_suspend.prototype={is_nblock:function(){return false},val:function(){var rv="__oni_rt.Suspend(function(arguments, ";if(this.wrapped)rv+="_oniX){resume=_oniX;";else rv+="resume){";var b=this.block.val();if(b.length)rv+="return __oni_rt.exec("+b+",arguments,this,'"+this.file+"')";rv+="}, function() {";for(var i=0;i<this.decls.length;++i){var name=this.decls[i][0];if(name=="arguments")throw "Cannot use 'arguments' as variable name in waitfor()";rv+=name+"=arguments["+i+"];"}rv+="})";return rv}};function ph_suspend_wrapper(code,pctx){this.code=code;this.line=pctx.line;this.file=pctx.filename}ph_suspend_wrapper.prototype={is_nblock:function(){return false},val:function(){return "__oni_rt.Fcall(0,"+this.line+",function(arguments){var resume; return __oni_rt.exnm("+this.code+",arguments, this,'"+this.file+"')}, __oni_rt.Nblock(function(a){return a;}))"}};function gen_using(has_var,lhs,exp,body,pctx){var rv;if(has_var){if(!lhs.is_id)throw "Variable name expected in 'using' expression";rv=gen_var_compound([[lhs.nblock_val()]],pctx);rv.stmts.push(new ph_using(lhs,exp,body,pctx));rv=rv.toBlock()}else rv=new ph_using(lhs,exp,body,pctx);return rv}function ph_using(lhs,exp,body,pctx){this.body=body||new ph_literal(0,pctx);this.assign1=new ph_assign_op(new ph_identifier("_oniW",pctx),"=",exp,pctx);if(lhs)this.assign2=new ph_assign_op(lhs,"=",new ph_identifier("_oniW",pctx),pctx);this.line=exp.line;this.file=pctx.filename}ph_using.prototype={is_nblock:function(){return false},val:function(){var rv="__oni_rt.Fcall(0,";rv+=this.line+",";rv+="function(arguments){var _oniW; return __oni_rt.exnm(__oni_rt.Seq("+0+",";rv+=this.assign1.val()+",";if(this.assign2)rv+=this.assign2.val()+",";rv+="__oni_rt.Try("+0+","+this.body.val();rv+=",0,__oni_rt.Nblock(function(arguments){if (_oniW && _oniW.__finally__) return _oniW.__finally__(); }),0)";rv+="),arguments,this,'"+this.file+"')},__oni_rt.Nblock(function(a){return a;}))";return rv}};function Hash(){}Hash.prototype={lookup:function(key){return this["$"+key]},put:function(key,val){this["$"+key]=val},del:function(key){delete this["$"+key]}};var TOKENIZER_SA=/(?:[ \f\r\t\v\u00A0\u2028\u2029]+|\/\/.*)*(?:((?:\n|\/\*(?:.|\n|\r)*?\*\/)+)|((?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?)|(\/(?:\\.|\[(?:\\.|[^\\n]])*\]|[^\/\n])+\/[gimy]*)|(==|!=|>>|<<|<=|>=|--|\+\+|\|\||&&|[-*\/%+&^|]=|[;,?:|^&=<>+\-*\/%!~.\[\]{}()]|[$_\w]+)|('(?:\\.|[^\'\n])*'|"(?:\\.|[^\"\n])*")|('(?:\\.|[^\'])*'|"(?:\\.|[^\"])*")|(\S+))/g;var TOKENIZER_OP=/(?:[ \f\r\t\v\u00A0\u2028\u2029]+|\/\/.*)*(?:((?:\n|\/\*(?:.|\n|\r)*?\*\/)+)|(>>>=|===|!==|>>>|<<=|>>=|==|!=|>>|<<|<=|>=|--|\+\+|\|\||&&|[-*\/%+&^|]=|[;,?:|^&=<>+\-*\/%!~.\[\]{}()]|[$_\w]+))/g;function SemanticToken(){}SemanticToken.prototype={exsf:function(pctx,st){throw "Unexpected "+this},excbp:0,excf:function(left,pctx,st){throw "Unexpected "+this},stmtf:null,tokenizer:TOKENIZER_SA,toString:function(){return "'"+this.id+"'"},exs:function(f){this.exsf=f;return this},exc:function(bp,f){this.excbp=bp;if(f)this.excf=f;return this},stmt:function(f){this.stmtf=f;return this},ifx:function(bp,right_assoc){this.excbp=bp;if(right_assoc)bp-=.5;this.excf=function(left,pctx,st){var right=parseExp(pctx,bp,st);return new ph_infix_op(left,this.id,right,pctx)};return this},asg:function(bp,right_assoc){this.excbp=bp;if(right_assoc)bp-=.5;this.excf=function(left,pctx,st){var right=parseExp(pctx,bp,st);return new ph_assign_op(left,this.id,right,pctx)};return this},pre:function(bp){return this.exs(function(pctx,st){var right=parseExp(pctx,bp,st);return new ph_prefix_op(this.id,right,pctx)})},pst:function(bp){return this.exc(bp,function(left,pctx,st){return new ph_postfix_op(left,this.id,pctx)})}};function Literal(type,value){this.id=type;this.value=value}Literal.prototype=new SemanticToken();Literal.prototype.tokenizer=TOKENIZER_OP;Literal.prototype.toString=function(){return "literal '"+this.value+"'"};Literal.prototype.exsf=function(pctx,st){return new ph_literal(this.value,pctx)};function Identifier(value){this.value=value}Identifier.prototype=new Literal("<id>");Identifier.prototype.exsf=function(pctx,st){return gen_identifier(this.value,pctx)};Identifier.prototype.toString=function(){return "identifier '"+this.value+"'"};var ST=new Hash();function S(id,tokenizer){var t=new SemanticToken();t.id=id;if(tokenizer)t.tokenizer=tokenizer;ST.put(id,t);return t}S("[").exs(function(pctx,st){var elements=[];while(pctx.token.id!="]"){if(elements.length)scan(pctx,",");if(pctx.token.id==","){elements.push((function(pctx){return new ph_literal("",pctx)})(pctx))}else if(pctx.token.id=="]")break;else elements.push(parseExp(pctx,110))}scan(pctx,"]");return new ph_arr_lit(elements,pctx)}).exc(270,function(l,pctx,st){var idxexp=parseExp(pctx);scan(pctx,"]");return new ph_idx_accessor(l,idxexp,pctx)});S(".").exc(270,function(l,pctx,st){if(pctx.token.id!="<id>")throw "Expected an identifier, found '"+pctx.token+"' instead";var name=pctx.token.value;scan(pctx);return new ph_dot_accessor(l,name,pctx)});S("new").exs(function(pctx,st){var exp=parseExp(pctx,0,"(");var args=[];if(pctx.token.id=="("){scan(pctx);while(pctx.token.id!=")"){if(args.length)scan(pctx,",");args.push(parseExp(pctx,110))}scan(pctx,")")}return new ph_new(exp,args)});S("(").exs(function(pctx,st){var e=parseExp(pctx);scan(pctx,")");return new ph_group(e)}).exc(260,function(l,pctx,st){var args=[];while(pctx.token.id!=")"){if(args.length)scan(pctx,",");args.push(parseExp(pctx,110))}scan(pctx,")");return new ph_fun_call(l,args,pctx)});S("++").pre(240).pst(250).asi_restricted=true;S("--").pre(240).pst(250).asi_restricted=true;S("delete").pre(240);S("void").pre(240);S("typeof").pre(240);S("+").pre(240).ifx(220);S("-").pre(240).ifx(220);S("~").pre(240);S("!").pre(240);S("*").ifx(230);S("/").ifx(230);S("%").ifx(230);S("<<").ifx(210);S(">>").ifx(210);S(">>>").ifx(210);S("<").ifx(200);S(">").ifx(200);S("<=").ifx(200);S(">=").ifx(200);S("instanceof").ifx(200);S("in").ifx(200);S("==").ifx(190);S("!=").ifx(190);S("===").ifx(190);S("!==").ifx(190);S("&").ifx(180);S("^").ifx(170);S("|").ifx(160);S("&&").ifx(150);S("||").ifx(140);S("?").exc(130,function(test,pctx,st){var consequent=parseExp(pctx,110);scan(pctx,":");var alternative=parseExp(pctx,110);return new ph_conditional(test,consequent,alternative,pctx)});S("=").asg(120,true);S("*=").asg(120,true);S("/=").asg(120,true);S("%=").asg(120,true);S("+=").asg(120,true);S("-=").asg(120,true);S("<<=").asg(120,true);S(">>=").asg(120,true);S(">>>=").asg(120,true);S("&=").asg(120,true);S("^=").asg(120,true);S("|=").asg(120,true);S(",").ifx(110,true);function validatePropertyName(token){var id=token.id;if(id!="<id>"&&id!="<string>"&&id!="<number>")throw "Invalid object literal syntax; property name expected, but saw "+prop}function parseBlock(pctx){push_stmt_scope(pctx);while(pctx.token.id!="}"){var stmt=parseStmt(pctx);add_stmt(stmt,pctx)}scan(pctx,"}");return new ph_block(pop_stmt_scope(pctx,"__oni_rt.Seq("+0,")"))}S("{").exs(function(pctx,st){var props=[];while(pctx.token.id!="}"){if(props.length)scan(pctx,",");var prop=pctx.token;if(prop.id=="}")break;validatePropertyName(prop);scan(pctx);if(pctx.token.id==":"){scan(pctx);var exp=parseExp(pctx,110);props.push(["prop",prop.value,exp])}else throw "Unexpected token '"+pctx.token+"'"}scan(pctx,"}",TOKENIZER_OP);return new ph_obj_lit(props,pctx)}).stmt(parseBlock);S(";").stmt(function(pctx){return undefined});S(")",TOKENIZER_OP);S("]",TOKENIZER_OP);S("}");S(":");S("<eof>").exs(function(pctx,st){throw "Unexpected end of input (exs)"}).stmt(function(pctx){throw "Unexpected end of input (stmt)"});function parseFunctionBody(pctx){push_decl_scope(pctx);push_stmt_scope(pctx);scan(pctx,"{");while(pctx.token.id!="}"){var stmt=parseStmt(pctx);add_stmt(stmt,pctx)}scan(pctx,"}");return pop_decl_scope(pctx)+pop_stmt_scope(pctx,"return __oni_rt.exec(__oni_rt.Seq("+1,"),arguments, this,'"+pctx.filename+"')")}function parseFunctionInner(pctx,pars){var par=scan(pctx,"(");while(pctx.token.id!=")"){if(pars.length)par=scan(pctx,",");if(par.id!="<id>")throw "Expected parameter name; found '"+par+"'";scan(pctx);pars.push(par.value)}scan(pctx,")");return parseFunctionBody(pctx)}S("function").exs(function(pctx,st){var fname="";if(pctx.token.id=="<id>"){fname=pctx.token.value;scan(pctx)}var pars=[];var body=parseFunctionInner(pctx,pars);return new ph_fun_exp(fname,pars,body,pctx)}).stmt(function(pctx){if(pctx.token.id!="<id>")throw "Malformed function declaration";var fname=pctx.token.value;scan(pctx);var pars=[];var body=parseFunctionInner(pctx,pars);return gen_fun_decl(fname,pars,body,pctx)});S("this",TOKENIZER_OP).exs(function(pctx,st){return new ph_identifier('this',pctx)});S("true",TOKENIZER_OP).exs(function(pctx,st){return new ph_literal('true',pctx)});S("false",TOKENIZER_OP).exs(function(pctx,st){return new ph_literal('false',pctx)});S("null",TOKENIZER_OP).exs(function(pctx,st){return new ph_literal('null',pctx)});function isStmtTermination(token){return token.id==";"||token.id=="}"||token.id=="<eof>"}function parseStmtTermination(pctx){if(pctx.token.id!="}"&&pctx.token.id!="<eof>"&&!pctx.newline)scan(pctx,";")}function parseVarDecls(pctx,st){var decls=[];do {if(decls.length)scan(pctx,",");var id=pctx.token.value;scan(pctx,"<id>");if(pctx.token.id=="="){scan(pctx);var initialiser=parseExp(pctx,110,st);decls.push([id,initialiser])}else decls.push([id])}while(pctx.token.id==",");return decls}S("var").stmt(function(pctx){var decls=parseVarDecls(pctx);parseStmtTermination(pctx);return gen_var_decl(decls,pctx)});S("else");S("if").stmt(function(pctx){scan(pctx,"(");var test=parseExp(pctx);scan(pctx,")");var consequent=parseStmt(pctx);var alternative=null;if(pctx.token.id=="else"){scan(pctx);alternative=parseStmt(pctx)}return new ph_if(test,consequent,alternative,pctx)});S("while").stmt(function(pctx){scan(pctx,"(");var test=parseExp(pctx);scan(pctx,")");var body=parseStmt(pctx);return new ph_loop(0,test,body)});S("do").stmt(function(pctx){var body=parseStmt(pctx);scan(pctx,"while");scan(pctx,"(");var test=parseExp(pctx);scan(pctx,")");parseStmtTermination(pctx);return new ph_loop(1,test,body)});S("for").stmt(function(pctx){scan(pctx,"(");var start_exp=null;var decls=null;if(pctx.token.id=="var"){scan(pctx);decls=parseVarDecls(pctx,"in")}else{if(pctx.token.id!=";")start_exp=parseExp(pctx,0,"in")}if(pctx.token.id==";"){scan(pctx);var test_exp=null;if(pctx.token.id!=";")test_exp=parseExp(pctx);scan(pctx,";");var inc_exp=null;if(pctx.token.id!=")")inc_exp=parseExp(pctx);scan(pctx,")");var body=parseStmt(pctx);return gen_for(start_exp,decls,test_exp,inc_exp,body,pctx)}else if(pctx.token.id=="in"){scan(pctx);if(decls&&decls.length>1)throw "More that one variable declaration in for-in loop";var obj_exp=parseExp(pctx);scan(pctx,")");var body=parseStmt(pctx);var decl=decls?decls[0]:null;return gen_for_in(start_exp,decl,obj_exp,body,pctx)}else throw "Unexpected token '"+pctx.token+"' in for-statement"});S("continue").stmt(function(pctx){var label=null;if(pctx.token.id=="<id>"&&!pctx.newline){label=pctx.token.value;scan(pctx)}parseStmtTermination(pctx);return new ph_cfe("c",label)});S("break").stmt(function(pctx){var label=null;if(pctx.token.id=="<id>"&&!pctx.newline){label=pctx.token.value;scan(pctx)}parseStmtTermination(pctx);return new ph_cfe("b",label)});S("return").stmt(function(pctx){var exp=null;if(!isStmtTermination(pctx.token)&&!pctx.newline)exp=parseExp(pctx);parseStmtTermination(pctx);return new ph_return(exp,pctx)});S("with").stmt(function(pctx){scan(pctx,"(");var exp=parseExp(pctx);scan(pctx,")");var body=parseStmt(pctx);return new ph_with(exp,body,pctx)});S("case");S("default");S("switch").stmt(function(pctx){scan(pctx,"(");var exp=parseExp(pctx);scan(pctx,")");scan(pctx,"{");var clauses=[];while(pctx.token.id!="}"){var clause_exp=null;if(pctx.token.id=="case"){scan(pctx);clause_exp=parseExp(pctx)}else if(pctx.token.id=="default"){scan(pctx)}else throw "Invalid token '"+pctx.token+"' in switch statement";scan(pctx,":");push_stmt_scope(pctx);top_stmt_scope(pctx).exp=clause_exp;while(pctx.token.id!="case"&&pctx.token.id!="default"&&pctx.token.id!="}"){var stmt=parseStmt(pctx);add_stmt(stmt,pctx)}clauses.push((function(pctx){var cexp=top_stmt_scope(pctx).exp;var block=new ph_block(pop_stmt_scope(pctx,"__oni_rt.Seq("+0,")"));return "["+(cexp?cexp.val():"__oni_rt.Default")+","+block.val()+"]"})(pctx))}scan(pctx,"}");return new ph_switch(exp,clauses);(exp,clauses,pctx)});S("throw").stmt(function(pctx){if(pctx.newline)throw "Illegal newline after throw";var exp=parseExp(pctx);parseStmtTermination(pctx);return new ph_throw(exp,pctx);});S("catch");S("finally");function parseCRF(pctx){var rv=[];var a=null;if(pctx.token.id=="catch"||pctx.token.value=="catchall"){var all=pctx.token.value=="catchall";a=[];scan(pctx);a.push(scan(pctx,"(").value);scan(pctx,"<id>");scan(pctx,")");scan(pctx,"{");a.push(parseBlock(pctx));a.push(all)}rv.push(a);if(pctx.token.value=="retract"){scan(pctx);scan(pctx,"{");rv.push(parseBlock(pctx))}else rv.push(null);if(pctx.token.id=="finally"){scan(pctx);scan(pctx,"{");rv.push(parseBlock(pctx))}else rv.push(null);return rv}S("try").stmt(function(pctx){scan(pctx,"{");var block=parseBlock(pctx);var crf=parseCRF(pctx);if(!crf[0]&&!crf[1]&&!crf[2])throw "Missing 'catch', 'finally' or 'retract' after 'try'";return new ph_try(block,crf,pctx)});S("waitfor").stmt(function(pctx){if(pctx.token.id=="{"){scan(pctx,"{");var blocks=[];blocks.push(parseBlock(pctx));var op=pctx.token.value;if(op!="and"&&op!="or")throw "Missing 'and' or 'or' after 'waitfor' block";do {scan(pctx);scan(pctx,"{");blocks.push(parseBlock(pctx))}while(pctx.token.value==op);var crf=parseCRF(pctx);return gen_waitfor_andor(op,blocks,crf,pctx)}else{scan(pctx,"(");var has_var=(pctx.token.id=="var");if(has_var)scan(pctx);var decls=[];if(pctx.token.id==")"){if(has_var)throw "Missing variables in waitfor(var)"}else decls=parseVarDecls(pctx);scan(pctx,")");scan(pctx,"{");++top_decl_scope(pctx).fscoped_ctx;var block=parseBlock(pctx);var crf=parseCRF(pctx);--top_decl_scope(pctx).fscoped_ctx;return gen_suspend(has_var,decls,block,crf,pctx)}});S("using").stmt(function(pctx){var has_var;scan(pctx,"(");if(has_var=(pctx.token.id=="var"))scan(pctx);var lhs,exp;var e1=parseExp(pctx,120);if(pctx.token.id=="="){lhs=e1;scan(pctx);exp=parseExp(pctx)}else{if(has_var)throw "Syntax error in 'using' expression";exp=e1}scan(pctx,")");var body=parseStmt(pctx);return gen_using(has_var,lhs,exp,body,pctx)});function makeParserContext(src,settings){var ctx={src:src,line:1,lastIndex:0,token:null};if(settings)for(var a in settings)ctx[a]=settings[a];return ctx}function compile(src,settings){var pctx=makeParserContext(src,settings);try{return parseScript(pctx)}catch(e){throw new Error("SJS syntax error "+(pctx.filename?"in "+pctx.filename+",":"at")+" line "+pctx.line+": "+e)}}exports.compile=compile;function parseScript(pctx){begin_script(pctx);scan(pctx);while(pctx.token.id!="<eof>"){var stmt=parseStmt(pctx);add_stmt(stmt,pctx);}return end_script(pctx)}function parseStmt(pctx){var t=pctx.token;scan(pctx);if(t.stmtf){return t.stmtf(pctx)}else if(t.id=="<id>"&&pctx.token.id==":"){scan(pctx);var stmt=parseStmt(pctx);throw "labeled statements not implemented yet"}else{var exp=parseExp(pctx,0,null,t);parseStmtTermination(pctx);return new ph_exp_stmt(exp,pctx)}}function parseExp(pctx,bp,st,t){bp=bp||0;if(!t){t=pctx.token;scan(pctx)}var left=t.exsf(pctx,st);while(bp<pctx.token.excbp&&pctx.token.id!=st){t=pctx.token;if(pctx.newline&&(!t.excf||t.asi_restricted))return left;scan(pctx);left=t.excf(left,pctx,st)}return left}function scan(pctx,id,tokenizer){if(!tokenizer){if(pctx.token)tokenizer=pctx.token.tokenizer;else tokenizer=TOKENIZER_SA}if(id&&(!pctx.token||pctx.token.id!=id))throw "Unexpected "+pctx.token;pctx.token=null;pctx.newline=0;while(!pctx.token){tokenizer.lastIndex=pctx.lastIndex;var matches=tokenizer.exec(pctx.src);if(!matches){pctx.token=ST.lookup("<eof>");break}pctx.lastIndex=tokenizer.lastIndex;if(tokenizer==TOKENIZER_SA){if(matches[4]){pctx.token=ST.lookup(matches[4]);if(!pctx.token){pctx.token=new Identifier(matches[4])}}else if(matches[1]){var m=matches[1].match(/\n/g);if(m){pctx.line+=m.length;pctx.newline+=m.length}}else if(matches[5])pctx.token=new Literal("<string>",matches[5]);else if(matches[6]){var val=matches[6];var m=val.match(/\n/g);pctx.line+=m.length;pctx.newline+=m.length;val=val.replace(/\\\n/g,"").replace(/\n/g,"\\n");pctx.token=new Literal("<string>",val)}else if(matches[2])pctx.token=new Literal("<number>",matches[2]);else if(matches[3])pctx.token=new Literal("<regex>",matches[3]);else if(matches[7])throw "Unexpected characters: '"+matches[7]+"'";else throw "Internal scanner error"}else if(tokenizer==TOKENIZER_OP){if(matches[2]){pctx.token=ST.lookup(matches[2]);if(!pctx.token){pctx.token=new Identifier(matches[2])}}else if(matches[1]){var m=matches[1].match(/\n/g);if(m){pctx.line+=m.length;pctx.newline+=m.length}}else{tokenizer=TOKENIZER_SA}}else throw "Internal scanner error: no tokenizer"}return pctx.token}})(__oni_rt.modules.c1={});(function(exports){exports.parse=function(data){if(typeof data!=="string"||!data){return null}data=data.replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g,"");if(/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){return window.JSON&&window.JSON.parse?window.JSON.parse(data):(new Function("return "+data))()}else{throw "Invalid JSON"}};})(__oni_rt.modules['json']={});(function(exports){function parseUri(str){var o=parseUri.options,m=o.parser[o.strictMode?"strict":"loose"].exec(str),uri={},i=14;while(i-- )uri[o.key[i]]=m[i]||"";uri[o.q.name]={};uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){if($1)uri[o.q.name][$1]=$2});return uri};parseUri.options={strictMode:"strict",key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};exports.parseUri=parseUri;})(__oni_rt.modules['parseuri']={});__oni_rt.src_require="(function(exports){\n\n\nif(__oni_rt.UA==\"msie\"&&window.execScript){\n\n\n\n\n\n\n\n\n\n\n\n__oni_rt.IE_resume_counter=0;\n__oni_rt.IE_resume={};\n\nexports.$eval=function(code,filename){filename=filename||\"\'$eval code\'\";\n\ntry{\nwaitfor(var rv,isexception){\nvar rc=++__oni_rt.IE_resume_counter;\n__oni_rt.IE_resume[rc]=resume;\nvar js=__oni_rt.modules[\"c1\"].compile(\"try{\"+code+\"}catchall(rv) { spawn(function(){__oni_rt.IE_resume[\"+rc+\"](rv[0],rv[1]);}) }\",{filename:filename});\n\n\nwindow.execScript(js);\n}\nif(isexception)throw rv;\n}finally{\n\ndelete __oni_rt.IE_resume[rc];\n}\nreturn rv;\n};\n}else{\n\n\nexports.$eval=function(code,filename){filename=filename||\"\'$eval code\'\";\n\nvar js=__oni_rt.modules[\"c1\"].compile(code,{filename:filename});\nreturn window.eval(js);\n};\n}\n\n\n\n\nvar pendingLoads={};\n\nfunction require(module){if(__oni_rt.modules[module])return __oni_rt.modules[module];\n\n\n\nvar pendingHook=pendingLoads[module];\nvar rv;\nif(!pendingHook){\npendingHook=pendingLoads[module]=[];\nvar src;\ntry{\nif(module in __oni_rt.modsrc){\n\nsrc=__oni_rt.modsrc[module];\ndelete __oni_rt.modsrc[module];\n}else{\n\nsrc=require.loadRemoteModule(module);\n}\nf=$eval(\"(function(exports){\"+src+\"})\",\"module \'\"+module+\"\'\");\nvar exports={};\nf(exports);\n\n\n\n\n__oni_rt.modules[module]=exports;\nrv=[true,exports];\n}catch(e){\n\ndelete __oni_rt.modules[module];\nrv=[false,e];\n}\ndelete pendingLoads[module];\n\nfor(var i=0;i<pendingHook.length;++i)pendingHook[i](rv);\n\n}else{\n\n\n\nwaitfor(rv){\npendingHook.push(resume);\n}\n}\nif(rv[0]==false){\nvar mes=\"Cannot load module \'\"+module+\"\'. (Underlying exception: \"+rv[1]+\")\";\nthrow new Error(mes);\n}\nreturn rv[1];\n};\nexports.require=require;\n\n\n\nrequire.path=\"\";\n\n\n\nrequire.loadRemoteModule=function(module){return require(\'http\').get(require.path+module+\".sjs\");\n\n\n\n};\n\n\n\n\n__oni_rt.runScripts=function(){var scripts=document.getElementsByTagName(\"script\");\n\n\n\n\n\n\n\n\nvar ss=[];\nfor(var i=0;i<scripts.length;++i){\nif(scripts[i].type==\"text/sjs\"){\nvar s=scripts[i];\nss.push(s);\n}\n}\n\nfor(var i=0;i<ss.length;++i){\nvar s=ss[i];\nvar m=s.getAttribute(\"module\");\nif(m)__oni_rt.modsrc[m]=s.innerHTML;else $eval(s.innerHTML,\"inline script \"+(i+1));\n\n\n\n}\n};\n\n})(window);\n";__oni_rt.modsrc['common']="exports.bind=function(f,thisObj){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nreturn function(){\nreturn f.apply(thisObj,arguments)};\n};\n\n\n\n\n\n\n\nexports.isArray=function(testObj){return testObj&&!(testObj.propertyIsEnumerable(\'length\'))&&(typeof testObj===\'object\')&&(typeof testObj.length===\'number\');\n\n\n\n\n};\n\n\n\n\n\n\n\n\n\n\n\n\nexports.supplant=function(str,o){if(!o||!str)return str;\n\nreturn str.replace(/{([^{}]*)}/g,function(a,b){\nvar r=o[b];\n\nreturn r!==undefined?r:a;\n});\n\n};\n\n\n\n\n\n\n\n\n\n\nvar replacements={\'&\':\'&\',\'>\':\'>\',\'<\':\'<\'};\n\n\n\n\n\nexports.sanitize=function(str){return str.replace(/[<>&]/g,function(c){\nreturn replacements[c];\n\n});\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.mergeSettings=function(){return accuSettings({},arguments);\n\n};\n\n\nfunction accuSettings(accu){for(var a=1;a<arguments.length;++a){\n\nvar arg=arguments[a];\nif(exports.isArray(arg)){\nfor(var i=0;i<arg.length;++i)accuSettings(accu,arg[i]);\n\n}else{\n\nfor(var o in arg)accu[o]=arg[o];\n\n}\n}\nreturn accu;\n}\n";__oni_rt.modsrc['cutil']="var common=require(\'common\');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.waitforAll=function waitforAll(funcs,args,this_obj){this_obj=this_obj||this;\n\nif(common.isArray(funcs))return waitforAllFuncs(funcs,args,this_obj);else if(common.isArray(args))return waitforAllArgs(funcs,args,this_obj);\n\n\n\n\nthrow new Error(\"waitforAll: argument error; either funcs or args needs to be an array\");\n};\n\nfunction waitforAllFuncs(funcs,args,this_obj){if(!funcs.length)return;\n\nwaitfor{\nfuncs[0].call(this_obj,args);\n}and{\n\n\n\nhold(0);\nwaitforAllFuncs(funcs.slice(1),args,this_obj);\n}\n};\n\nfunction waitforAllArgs(f,args,this_obj){if(!args.length)return;\n\nwaitfor{\nf.call(this_obj,args[0]);\n}and{\n\n\n\nhold(0);\nwaitforAllArgs(f,args.slice(1),this_obj);\n}\n}\n\n\n\n\n\n\n\n\nexports.waitforFirst=function waitforFirst(arr){if(!arr.length)hold();\n\nwaitfor{\nreturn arr[0]();\n}or{\n\n\n\nhold(0);\nreturn waitforFirst(arr.slice(1));\n}\n};\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Semaphore(permits){this.permits=permits;\n\n\n\n\n\nthis.queue=[];\nvar me=this;\nthis._permit={__finally__:function(){me.release()}};\n}\nexports.Semaphore=Semaphore;\nSemaphore.prototype={acquire:function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nif(this.permits<=0){\n\nwaitfor(){\nthis.queue.push(resume);\n}retract{\n\nfor(var i=0;this.queue[i]!=resume;++i);\nthis.queue.splice(i,1);\n}\n}\n--this.permits;\nreturn this._permit;\n},release:function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar me=this;\n\nspawn(function(){++me.permits;\n\nif(me.queue.length)me.queue.shift()();\n});\n}};\n\n\n\n\n\n\n\n\n\nexports.makeBoundedFunction=function(f,max_concurrent_calls){var permits=new Semaphore(max_concurrent_calls);\n\nreturn function(){using(permits.acquire())return f.apply(this,arguments);\n\n\n};\n};\n\n\n\n\n\n\n\n\nexports.makeRateLimitedFunction=function(f,max_cps){var min_elapsed=1000/max_cps;\n\nvar last_call;\nreturn exports.makeBoundedFunction(function(){\nif(last_call){\n\nvar elapsed=(new Date())-last_call;\nif(elapsed<min_elapsed)hold(min_elapsed-elapsed);\n\n}\nlast_call=new Date();\nreturn f.apply(this,arguments);\n},1);\n};\n\n\n\n\n\n\n\n\n\n\n\nfunction Queue(capacity){this.items=[];\n\nthis.S_nonfull=new Semaphore(capacity);\nthis.S_nonempty=new Semaphore(0);\n}\nexports.Queue=Queue;\nQueue.prototype={count:function(){\n\n\n\n\n\nreturn this.items.length},put:function(item){\n\n\n\n\n\n\n\nthis.S_nonfull.acquire();\n\nthis.items.push(item);\nthis.S_nonempty.release();\n},get:function(){\n\n\n\n\n\n\n\nthis.S_nonempty.acquire();\n\nvar item=this.items.shift();\nthis.S_nonfull.release();\nreturn item;\n}};\n\n";__oni_rt.modsrc['debug']="var common=require(\'common\');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar fontStyle=\"font:12px monospace;\";\nvar execStyle=\"color:rgb(84,138,198);\";\nvar systemStyle=\"color:#888;\";\nvar icons={arrowblue:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAYAAACwXJejAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHNJREFUeNpiYCAFuLfdUcAlxwRVEACk7gPpBJyKgEAASs8HKuxHV8SIZB3ItPlQDQt2VqkkYiiCKjQAUvuhCg8AcSBQ8QcmNJORHf8Bm3UJUOsY0K2D+a4ASUEjsgIQYIHSB6DGFwIVLMAXmAIMlACAAAMAwjQlc6knNh8AAAAASUVORK5CYII=\",arrowdark:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAYAAACwXJejAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHNJREFUeNpiYCAFzJw5UwGXHBNUQQCQug+kE3AqAgIBKD0fqLAfXREjknUg0+ZDNSxIT09PxFAEVWgApPZDFR4A4kCg4g9MaCYjO/4DNusSoNYxoFsH810BkoJGZAUgwAKlD0CNLwQqWIAvMAUYKAEAAQYAh/Ul+0ewq2IAAAAASUVORK5CYII=\",clear:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUeNpiYCARMCJzZs6cmQCk8oHYACp0AYgnpqenL8DQAFQ8H0gl4DB4AVBTIojBhGQyTPEHIFYEYkEgboSKJUDVQDRAnQFTLADE60EcoKkNSJrykTXA3GwIdTeIvx9oKkjzBGQ1TGhuBdngiKwJaiMcMCGFBggUAJ2Bruk8shqYholQuh7ojAYoOxDJT3A15AUrNERAAolIzoM5IxGmmCwAEGAA1RE0WajjFisAAAAASUVORK5CYII=\",collapse:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGJJREFUeNpiYCARMIKImTNnNgCpegJqG9PT0xuYgIoFiFDMAFPDgiwCNIERm0qgof9hbCagog+k+IGJVE+z4LD6AtBmQ1JsMCDKSbg8jS0e/hPjfpCBMBsaiVDfyEAOAAgwANi1GX1uUGWvAAAAAElFTkSuQmCC\",treeclosed:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUeNpiYCAVNDQ07AdiBVzyTEhsByC+D1TcD8QC+BTCQAFUQwGyICOS1f+xaHoAxIlAuQNMxPqBBYf4ByBuBJo0AZ/CCVBFH3CZeADqngcMlACAAAMAv7Icc+yXbNgAAAAASUVORK5CYII=\",treeopen:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF5JREFUeNpiYKA2YGxoaEgA0vNxyH8AYkOgmgdMQGIBkHMBh8KJIEUgBhNUoBCLogdARQ0wDlghkH8ASG1AU4iimQmHxAGg5g1YFULd0ojLKSxo/AlQTRfIDkeAAAMAtK4cNkAjG14AAAAASUVORK5CYII=\"};\n\n\n\n\n\n\n\nvar isIE=/msie ([0-9]{1,}[\\.0-9]{0,})/i.exec(navigator.userAgent);\nvar isWebkitMobile=/webkit.*mobile/i.test(navigator.userAgent);\nif(isWebkitMobile)fontStyle=\"font:12px monospace;line-height:18px;\";\nif(isIE)isIE=parseFloat(isIE[1]);\nif(isIE&&isIE<8)for(var p in icons)icons[p]=\"http://onilabs.com/images/console/\"+p+\".png\";\nvar setStyle=function(){if(isIE)return function(el,style){\n\nel.style.setAttribute(\"cssText\",style);return el};else return function(el,style){\nel.setAttribute(\"style\",style);return el};\n}();\nfunction testFont(name){var body=document.getElementsByTagName(\"body\")[0];\n\nvar test=makeDiv(\'<b style=\"display:inline !important; width:auto !important; font:normal 10px/1 \\\'\'+name+\'\\\',sans-serif !important\">ii</b>\'+\'<b style=\"display:inline !important; width:auto !important; font:normal 10px/1 \\\'\'+name+\'\\\',monospace !important\">ii</b>\',\'position: absolute; visibility: hidden; display: block !important\');\n\n\n\nbody.insertBefore(test,body.firstChild);\nvar ab=test.getElementsByTagName(\'b\');\nvar installed=ab[0].offsetWidth===ab[1].offsetWidth;\nbody.removeChild(test);\nreturn installed;\n}\nif(testFont(\"monaco\"))fontStyle=\"font:10px monaco;\";\n\nfunction makeDiv(content,style){var rv=document.createElement(\"div\");\n\nif(style)setStyle(rv,style);\nif(content)rv.innerHTML=content;\n\nreturn rv;\n}\n\n\n\n\nfunction has_props(obj){for(var a in obj){\n\nreturn true;\n}\nreturn false;\n}\n\nfunction safeName(obj){var name;\n\ntry{name=obj.toString();if(name)return name}catch(e){}\ntry{name=obj.tagName;if(name)return name}catch(e){}\ntry{name=obj.nodeName;if(name)return name}catch(e){}\ntry{name=(typeof obj);if(name)return name}catch(e){}\nreturn \"\";\n\n}\n\nfunction inspect_obj(obj,name){if(name)name=\"<span style=\'font-weight:normal\'>\"+common.sanitize(name)+\":</span> \";else name=\"\";\n\n\n\n\n\nvar indent=name?\"<span style=\'width:12px;height:12px;float:left;\'></span>\":\"\";\nif(typeof obj==\"function\")return makeDiv(indent+name+\"<span style=\'\"+systemStyle+\"\'>function</span>\");\nif(obj==undefined)return makeDiv(indent+name+\"<span style=\'\"+systemStyle+\"\'>undefined</span>\");\nif(!has_props(obj)||typeof obj==\"string\"){\nreturn makeDiv(indent+name+(obj?common.sanitize(safeName(obj)):obj),\"white-space:pre;\");\n}\n\nvar objdesc=safeName(obj);\nvar m=objdesc.match(/\\[object (\\w+)\\]/);\nif(m)objdesc=m[1];\nvar rv=makeDiv(\"<div><span style=\'cursor:pointer\'><span \\n style=\'margin:0 2px 0 -2px;background:url(\"+icons.treeclosed+\") no-repeat 0px 2px;float:left;display:block;width:12px;height:12px\'> </span>\"+name+\"<span style=\'\"+systemStyle+\"\'>\"+common.sanitize(objdesc)+\"</span> </span>\\n</div>\");\nspawn(function(){var toggle=rv.firstChild.firstChild;\n\nwhile(true){\nrequire(\'dom\').waitforEvent(toggle,\'click\');\nvar children=makeDiv(null,\"margin-left:15px\");\nvar props=[];\nfor(var p in obj)props.push(p);\nprops.sort();\nfor(var i=0,p;p=props[i];++i){\ntry{\nchildren.appendChild(inspect_obj(obj[p],p));\n}catch(e){\nchildren.appendChild(inspect_obj(e,p));\n}\n}\nrv.appendChild(children);\ntoggle.firstChild.style.backgroundImage=\"url(\"+icons.treeopen+\")\";\nrequire(\'dom\').waitforEvent(toggle,\'click\');\ntoggle.firstChild.style.backgroundImage=\"url(\"+icons.treeclosed+\")\";\nrv.removeChild(children);\nchildren=null;\n}\n});\nreturn rv;\n}\n\nfunction viewportStick(el,offset){offset=offset||0;\n\nel.style.position=\"absolute\";\nel.style.bottom=\"auto\";\nel.style.webkitTransition=\"top 0.2s ease-in\";\nel.style.top=(window.innerHeight+window.pageYOffset-el.offsetHeight)+\"px\";\n\n}\n\n\n\nexports.console=function(opts){return new Console(opts);\n\n};\n\nfunction Console(opts){opts=common.mergeSettings({collapsed:true,height:200,fullscreen:isWebkitMobile?true:false},opts);\n\n\n\n\n\n\nvar div=document.createElement(\"div\");\nvar parent=opts.target?document.getElementById(opts.target):null;\nif(!parent){\nparent=makeDiv(null,\"position:fixed;bottom:0;left:0;width:100%;z-index:99999;\"+(opts.fullscreen?\"position:absolute;top:0;\":\"height:\"+opts.height+\"px;\"));\n\ndocument.getElementsByTagName(\"body\")[0].appendChild(parent);\nthis.root=parent;\n}else{\nthis.root=div;\n}\nthis.flipmode=isWebkitMobile;\nsetStyle(div,fontStyle+\"position:relative;height:100%;width:100%;padding:0; margin:0; background:#fff;border\"+(opts.target?\"\":\"-top\")+\": 1px solid #ccc;\");\ndiv.innerHTML=\"<span style=\'display:block;cursor:row-resize;position:absolute;top:0px;border-top:1px solid #eee;left:0;right:0;height:2px;background:white;z-index:99999\'></span>\\n<div style=\'margin:0;position:absolute;top:\"+(this.flipmode?20:0)+\"px;left:0;right:0px;bottom:\"+(this.flipmode?0:20)+\"px;overflow:auto\'>\\n</div><div style=\'height:20px;position:absolute;left:0;right:0;\"+(this.flipmode?\"top:0;\":\"bottom:0;\")+\"background: #fcfcfc url(\"+icons.arrowblue+\") 6px 4px no-repeat;\'> <div style=\'z-index:99999;height:20px;position:absolute;right:0;\'>\\n <a title=\'Hide console\' style=\'cursor:pointer;background:url(\"+icons.collapse+\") no-repeat 4px 4px; width:12px;height:12px; padding: 4px; display:block;float:left\'></a>\\n <a title=\'Clear console\' style=\'cursor:pointer;background:url(\"+icons.clear+\") no-repeat 4px 4px; width:12px;height:12px; padding: 4px; display:block;float:left\'></a>\\n </div>\\n <div style=\'height:20px;position:absolute;left:0; \"+((!isIE||isIE>7)?\"right:40px;\":\"\")+\"padding:0 0 0 20px\'> <input type=\'text\' style=\'line-height:15px;-webkit-appearance: caret;\"+fontStyle+\"width:100%;margin:2px 0 0 0;border:0;padding:0;background:transparent;outline:none\'/> </div></div>\";\nparent.appendChild(div);\nthis.output=div.getElementsByTagName(\"div\")[0];\nthis.closebutton=div.getElementsByTagName(\"a\")[0];\nthis.clearbutton=div.getElementsByTagName(\"a\")[1];\nthis.resizehandle=div.getElementsByTagName(\"span\")[0];\nthis.cmdline=div.getElementsByTagName(\"input\")[0];\nthis.cmdloop_stratum=spawn(common.bind(this._cmdloop,this));\nthis.history=(window[\"sessionStorage\"]&&window[\"JSON\"]&&window.sessionStorage.history)?JSON.parse(sessionStorage.history):[\"\"];\n\nthis.history_p=this.history.length-1;\nthis.summonbutton=makeDiv(\"<div style=\'background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#eee));\'><a title=\'Open Apollo Console\' style=\'display:block;padding: 2px 8px 3px 10px;background:url(\"+icons.arrowblue+\") no-repeat 10px 6px;width: 8px;height:17px\'></a></div>\",\"position:fixed;bottom:-2px; left:-4px;border-radius: 3px;-webkit-border-radius: 3px;\\nz-index:9999; line-height:20px; border: 1px solid #ddd;visibility:hidden;cursor:pointer;background: #fff;\");\ndocument.getElementsByTagName(\"body\")[0].appendChild(this.summonbutton);\nif(opts.collapsed){\nthis.collapse();\n}\n}\nConsole.prototype={_cmdloop:function(){\nwaitfor{\n\nusing(var Q=require(\'dom\').eventQueue(this.cmdline,\'keydown\')){\nwhile(true){\nvar key=Q.get().keyCode;\n\nswitch(key){case 10:\n\ncase 13:\nif(!this.cmdline.value)continue;\nthis.exec(this.cmdline.value);\nif(this.history.length>50)this.history.shift();\nthis.history[this.history.length-1]=this.cmdline.value;\nthis.history_p=this.history.length;\nthis.history.push(\"\");\nif(window[\"sessionStorage\"]&&window[\"JSON\"])sessionStorage.history=JSON.stringify(this.history);\n\nthis.cmdline.value=\"\";\nbreak;\ncase 38:\nif(this.history_p==0)break;\nif(this.history_p==this.history.length-1)this.history[this.history_p]=this.cmdline.value;\n\nthis.cmdline.value=this.history[--this.history_p];\nbreak;\ncase 40:\nif(this.history_p==this.history.length-1)break;\n\nthis.cmdline.value=this.history[++this.history_p];\nbreak;\n}\n}\n}\n}and{\n\nwhile(true){\n\n\nwaitfor{\nrequire(\'dom\').waitforEvent(this.closebutton,\"click\");\nthis.collapse();\n}or{\n\nrequire(\'dom\').waitforEvent(this.output,\"click\");\nthis.focus();\n}or{\n\nrequire(\'dom\').waitforEvent(this.clearbutton,\"click\");\nthis.clear();\n}\n};\n}and{\n\nif(!isWebkitMobile)hold();\nusing(var Q2=require(\'dom\').eventQueue(document.getElementsByTagName(\"body\")[0],\'touchmove touchend\')){\nwhile(true){\nviewportStick(this.summonbutton);\nQ2.get();\n};\n}\n}and{\n\nvar lasty;\nwhile(true){\nvar e=require(\'dom\').waitforEvent(document.getElementsByTagName(\"body\")[0],\'mousedown mousemove mouseup\');\nswitch(e.type){case \"mousedown\":\n\nif(e.target==this.resizehandle||e.srcElement==this.resizehandle){\ndocument.documentElement.style.webkitUserSelect=\"none\";\nlasty=e.pageY||e.clientY;\n}\nbreak;\ncase \"mousemove\":\nif(lasty!=undefined){\n\nvar h=lasty-(e.pageY||e.clientY)+parseInt(this.root.style.height.split(\"px\")[0]);\nif(h>70){\nthis.root.style.height=h+\"px\";\nlasty=e.pageY||e.clientY;\n}\n}\nbreak;\ncase \"mouseup\":\ndocument.documentElement.style.webkitUserSelect=\"auto\";\nlasty=undefined;\nbreak;\n}\n}\n}\n},_append:function(e){\n\nif(this.flipmode){\n\nthis.output.insertBefore(e,this.output.firstChild);\n}else{\nthis.output.appendChild(e);\nthis.output.scrollTop=this.output.scrollHeight;\n}\n},collapse:function(){\n\nthis.root.style.display=\"none\";\n\nthis.summonbutton.style.visibility=\"visible\";\nvar me=this;\nspawn(function(){require(\'dom\').waitforEvent(me.summonbutton,\"click\");\n\nme.expand();\n});\n},expand:function(){\n\nthis.root.style.display=\"block\";\n\nthis.summonbutton.style.visibility=\"hidden\";\nthis.focus();\n},exec:function(cl){\n\nvar e=document.createElement(\"div\");\n\nsetStyle(e,fontStyle+\"background:#fff url(\"+icons.arrowdark+\") 6px 6px no-repeat;line-height:15px;border-bottom: 1px solid #eee; padding: 5px 15px 4px 20px\");\ne.innerHTML=\"<div style=\'\"+execStyle+\";margin-bottom:2px;white-space:pre;\'>\"+common.sanitize(cl)+\"</div>\";\nthis._append(e);\nvar me=this;\nspawn(function(){var result=document.createElement(\'div\');\n\nwaitfor{\ntry{\nresult=inspect_obj($eval(cl,\"commandline\"));\n}catch(ex){\n\nsetStyle(result,\'color:red;\');\nresult.innerHTML=common.sanitize(ex?ex.toString():\"\");\n}\n}or{\n\ntry{\ne.firstChild.innerHTML+=\"<a title=\'Cancel this stratum\' style=\'text-decoration:underline;cursor:pointer;float:right\'>abort</a>\";\nvar b=e.firstChild.lastChild;\nrequire(\'dom\').waitforEvent(b,\"click\");\nresult.innerHTML=\"<span style=\'color:red\'>Aborted</span>\";\n}finally{\n\nb.parentNode.removeChild(b);\n}\n}\ne.appendChild(result);\nif(!me.flipmode)me.output.scrollTop=me.output.scrollHeight;\n\n});\n},_log:function(args,color){\n\nvar e=document.createElement(\"div\");\n\n\nsetStyle(e,fontStyle+\"border-bottom: 1px solid #eee; padding: 6px 15px 4px 20px;\"+(color?(\"color:\"+color):\"\"));\n\n\nfor(var i=0;i<args.length;++i){\ne.appendChild(inspect_obj(args[i]));\n}\nthis._append(e);\n},log:function(){\nthis._log(arguments);\n\n},warn:function(){\nthis._log(arguments,\"darkorange\");\n\n},error:function(){\nthis._log(arguments,\"red\");\n\n},clear:function(){\n\nthis.output.innerHTML=\"\";\n\n},focus:function(){\n\nthis.cmdline.focus()},close:function(){\n\nthis.root.parentNode.removeChild(this.root);\n\n\n},__finally__:function(){\n\nthis.close()}};\n\n";__oni_rt.modsrc['dom']="function elementsFromSelector(selector){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar elems;\n\n\nif(typeof selector===\"string\")elems=[document.getElementById(selector)];else elems=[selector];\n\n\n\n\nreturn elems;\n}\n\nfunction addListener(elem,type,handler){if(elem.addEventListener)elem.addEventListener(type,handler,false);else elem.attachEvent(\"on\"+type,handler);\n\n\n\n\n}\n\nfunction removeListener(elem,type,handler){if(elem.removeEventListener)elem.removeEventListener(type,handler,false);else elem.detachEvent(\"on\"+type,handler);\n\n\n\n\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.waitforEvent=function(selector,events,filter){var elems=elementsFromSelector(selector);\n\nvar elem_count=elems.length;\n\nevents=events.split(\" \");\nvar event_count=events.length;\n\nwaitfor(var rv=null){\nfunction handleEvent(e){if(filter&&!filter(e))return;\n\n\nresume(e);\n}\n\nfor(var i=0;i<event_count;++i)for(var j=0;j<elem_count;++j)addListener(elems[j],events[i],handleEvent);\n\n\n}finally{\n\nfor(var i=0;i<event_count;++i)for(var j=0;j<elem_count;++j)removeListener(elems[j],events[i],handleEvent);\n\n\n}\nreturn rv;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.eventQueue=function(selector,events,filter){return (new EventQueue(selector,events,filter));\n\n};\n\nfunction EventQueue(selector,events,filter){\nvar capacity=100;\n\n\nthis._queue=new (require(\"cutil\").Queue)(capacity);\nthis.elems=elementsFromSelector(selector);\nthis.events=events.split(\" \");\n\nvar me=this;\nthis._handleEvent=function(e){if(filter&&!filter(e))return;\n\n\nif(me._queue.size==capacity){\n\n\nthrow new Error(\"Dropping event in EventQueue\");\n}\nif(__oni_rt.UA==\"msie\"){\n\n\nvar orig_g=e;\ne={};\nfor(var p in orig_g)e[p]=orig_g[p];\n\n}\nme._queue.put(e);\n};\n\nfor(var i=0;i<this.events.length;++i)for(var j=0;j<this.elems.length;++j)addListener(this.elems[j],this.events[i],this._handleEvent);\n\n\n}\n\nEventQueue.prototype={count:function(){\n\n\n\n\n\nreturn this._queue.count();\n\n},get:function(){\n\n\n\n\n\n\n\nreturn this._queue.get();\n\n},stop:function(){\n\n\n\n\n\n\n\n\n\nfor(var i=0;i<this.events.length;++i)for(var j=0;j<this.elems.length;++j)removeListener(this.elems[j],this.events[i],this._handleEvent);\n\n\n\n},__finally__:function(){\n\n\n\n\n\n\n\n\nthis.stop()}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.setCookie=function(name,value,days){var v=name+\"=\"+escape(value);\n\nif(days){\nvar date=new Date();\ndate.setDate(date.getDate()+days);\nv+=\";expires=\"+date.toUTCString();\n}\ndocument.cookie=v;\n};\n\n\n\n\n\n\n\nexports.getCookie=function(name){var c,start;\n\nif(!(c=document.cookie)||(start=c.indexOf(name+\"=\"))==-1)return \"\";\n\n\nstart+=name.length+1;\nend=c.indexOf(\";\",start);\nif(end==-1)end=c.length;\nreturn unescape(c.substring(start,end));\n};\n\n\n\n\n\n\nexports.removeCookie=function(name){exports.setCookie(name,\"\",-1);\n\n};\n\n";__oni_rt.modsrc['facebook']="function defaultPrefix(name){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nreturn \"$\"+name;\n\n\n}\n\n\n\n\n\n\n\n\n\n\nexports.install=function(opts){opts=opts||{};\n\nif(opts.autoload===undefined)opts.autoload=true;\nvar prefix=opts.prefix||defaultPrefix;\n\nif(!window[\'FB\']&&opts.autoload){\nthis.load(opts);\n}\n\nFB.Data[prefix(\"query\")]=function(fql,data){waitfor(var rv){\n\nvar q=FB.Data.query(fql,data);\nq.wait(resume);\n}\nreturn rv;\n};\nvar fbfn=\"api login logout ui getLoginStatus\".split(\" \");\nfor(var i=0,fn;fn=fbfn[i];i++ ){\nFB[prefix(fn)]=function(fn){return function(){\nvar args=arguments;\n\nwaitfor(var rv){\nif(fn==\"login\")args.unshift(resume);else args.push(resume);\n\nFB[fn].apply(FB,args);\n}\nif(fn==\"api\"){\nif(!rv||rv.error)throw rv.error.message;\nreturn rv.data||rv;\n}else{\nreturn rv;\n}\n};\n}(fn);\n}\n};\n\nexports.load=function(opts){if(!window[\'FB\']){\n\nrequire(\"http\").script(\"http://connect.facebook.net/en_US/all.js\");\n}\n};\n";__oni_rt.modsrc['google']="var common=require(\"common\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar http=require(\"http\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction search(q,settings){return http.jsonp([\"http://ajax.googleapis.com/ajax/services/search/web\",{v:\"1.0\",q:q},settings]);\n\n};\nexports.search=search;\n\n\n\n\n\n\n\n\n\n\n\n\nexports.siteSearch=function(q,site,settings){q=q||\"\";\n\nq+=\" site:\"+site;\nreturn search(q,settings);\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.translate=function(text,to,from,extra){from=from||\"\";\n\nvar langpair;\nif(common.isArray(to)){\nlangpair=[];\nfor(var i=0;i<to.length;++i)langpair.push(from+\"|\"+to[i]);\n\n}else langpair=from+\"|\"+to;\n\n\nreturn http.jsonp([\"http://ajax.googleapis.com/ajax/services/language/translate\",{q:text,v:\"1.0\",langpair:langpair},extra]);\n\n\n};\n\n\n\n\n\n\n\n\n\nexports.dictionaryLookup=function(word,settings){var s=settings||{};\n\ns.q=word;\ns.sl=s.sl||\"en\";\ns.tl=s.tl||\"en\";\nreturn http.jsonp([\"http://www.google.com/dictionary/json\",s]);\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction speak(txt,language){language=language||\"en\";\n\nvar txt=encodeURIComponent(txt);\ntry{\nvar a=new Audio(\"http://translate.google.com/translate_tts?q=\"+txt+\"&tl=\"+language);\ntry{\nwaitfor(var ok){\nvar r=resume;\na.addEventListener(\"canplaythrough\",r,true);\nhold(2000);\nr(false);\n}\n}finally{\n\na.removeEventListener(\"canplaythrough\",r,true);\n}\nif(!ok)throw new Error(\"Error playing back audio.\");\ntry{\nwaitfor(){\nvar r=resume;\na.addEventListener(\"ended\",r,true);\na.play();\n}\n}finally{\n\na.removeEventListener(\"ended\",r,true);\n}\n}finally{\n\n\ndelete a;\n}\n}\nexports.speak=speak;\n\n\nfunction ensureAPI(){if(window[\"google\"]&&window.google.load)return;\n\nhttp.script(\"http://www.google.com/jsapi\");\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.load=function(moduleName,moduleVersion,settings){ensureAPI();\n\nwaitfor(){\nsettings=settings||{};\nsettings.callback=resume;\ngoogle.load(moduleName,moduleVersion,settings);\n}\nreturn google[moduleName];\n};\n\n";__oni_rt.modsrc['http']="var common=require(\"common\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction constructQueryString(hashes){var parts=[];\n\nif(common.isArray(hashes)){\nfor(var i=0;i<hashes.length;++i){\nvar part=constructQueryString(hashes[i]);\nif(part.length)parts.push(part);\n\n}\n}else{\n\nfor(var q in hashes){\nvar l=encodeURIComponent(q)+\"=\";\nvar val=hashes[q];\nif(!common.isArray(val))parts.push(l+encodeURIComponent(val));else{\n\n\nfor(var i=0;i<val.length;++i)parts.push(l+encodeURIComponent(val[i]));\n\n}\n}\n}\nreturn parts.join(\"&\");\n}\nexports.constructQueryString=constructQueryString;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction constructURL(url_spec){var base;\n\nvar qparts=[];\nif(!common.isArray(url_spec))base=url_spec;else{\n\n\nif(common.isArray(url_spec[0]))base=constructURL(url_spec[0]);else base=url_spec[0];\n\n\n\nfor(var hs=1;hs<url_spec.length;++hs){\nvar part=constructQueryString(url_spec[hs]);\nif(part.length)qparts.push(part);\n\n}\n}\nfor(var q=1;q<arguments.length;++q){\nvar part=constructQueryString(arguments[q]);\nif(part.length)qparts.push(part);\n\n}\nvar query=qparts.join(\"&\");\nif(query.length){\nif(base.indexOf(\"?\")!=-1)base+=\"&\";else base+=\"?\";\n\n\n\nbase+=query;\n}\nreturn base;\n}\nexports.constructURL=constructURL;\n\n\n\n\nfunction createXMLHttpRequest(){try{\n\nreturn new XMLHttpRequest();\n}catch(e){}\ntry{\nreturn new ActiveXObject(\"Msxml2.XMLHTTP\");\n}catch(e){}\nthrow \"XMLHttpRequest not supported by your browser\";\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction xhr(url,settings){var opts=common.mergeSettings({method:\"GET\",body:null,throwing:true},settings);\n\n\n\n\n\n\n\n\n\n\nurl=constructURL(url,opts.query);\nvar req=opts.req;\nif(!req)req=createXMLHttpRequest();\n\nreq.open(opts.method,url,true,opts.username,opts.password);\nwaitfor(){\nreq.onreadystatechange=function(evt){if(req.readyState!=4)return;else resume();\n\n\n\n\n};\nif(opts.headers)for(var h in opts.headers)req.setRequestHeader(h,opts.headers[h]);\n\n\nreq.send(opts.body);\n}retract{\n\nreq.abort();\n}\n\nif(opts.throwing){\n\nif(!(req.status.toString().charAt(0) in {\'0\':1,\'2\':1})){\nvar err=new Error(req.statusText+\" (\"+req.status+\")\");\nerr.status=req.status;\nerr.req=req;\nthrow err;\n}\n}\nreturn req;\n}\nexports.xhr=xhr;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction get(){return xhr.apply(this,arguments).responseText;\n\n};\nexports.get=get;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.post=function(url,body,settings){return xhr(url,[{method:\"POST\",body:body},settings]).responseText;\n\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.json=function(){return require(\"json\").parse(get.apply(this,arguments));\n\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.xml=function(){return xhr.apply(this,arguments).responseXML;\n\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.jsonp=function(url,settings){var opts=common.mergeSettings({iframe:false,cbfield:\"callback\"},settings);\n\n\n\n\n\n\n\nurl=constructURL(url,opts.query);\nif(opts.iframe||opts.forcecb)return jsonp_iframe(url,opts);else return jsonp_indoc(url,opts);\n\n\n\n};\n\nfunction jsonp_iframe(url,opts){var cb=opts.forcecb||\"R\";\n\nvar cb_query={};\ncb_query[opts.cbfield]=cb;\nurl=constructURL(url,cb_query);\nvar iframe=document.createElement(\"iframe\");\ndocument.getElementsByTagName(\"head\")[0].appendChild(iframe);\nvar doc=iframe.contentWindow.document;\nwaitfor(var rv){\ndoc.open();\niframe.contentWindow[cb]=resume;\n\n\nhold(0);\ndoc.write(\"\\x3Cscript type=\'text/javascript\' src=\\\"\"+url+\"\\\">\\x3C/script>\");\ndoc.close();\n}finally{\n\niframe.parentNode.removeChild(iframe);\n}\n\n\nhold(0);\nreturn rv;\n}\n\nvar jsonp_req_count=0;\nvar jsonp_cb_obj=\"_oni_jsonpcb\";\nfunction jsonp_indoc(url,opts){if(!window[jsonp_cb_obj])window[jsonp_cb_obj]={};\n\n\nvar cb=\"cb\"+(jsonp_req_count++ );\nvar cb_query={};\ncb_query[opts.cbfield]=jsonp_cb_obj+\".\"+cb;\nurl=constructURL(url,cb_query);\nvar elem=document.createElement(\"script\");\nelem.setAttribute(\"src\",url);\nelem.setAttribute(\"async\",\"async\");\nelem.setAttribute(\"type\",\"text/javascript\");\nwaitfor(var rv){\nwindow[jsonp_cb_obj][cb]=resume;\ndocument.getElementsByTagName(\"head\")[0].appendChild(elem);\n\nrequire(\"dom\").waitforEvent(elem,\"error\");\n\nthrow new Error(\"Could not complete JSONP request to \'\"+url+\"\'\");\n}finally{\n\nelem.parentNode.removeChild(elem);\ndelete window[jsonp_cb_obj][cb];\n}\nreturn rv;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _pendingScripts={};\nvar _loadedScripts={};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.script=function(){var url=constructURL(arguments);\n\nif(_loadedScripts[url])return;\n\nvar hook=_pendingScripts[url];\nif(hook!=null){\nwaitfor(){\nhook.push(resume);\n}\n\n\n\n}else{\n\n\nwaitfor(){\nvar elem=document.createElement(\"script\");\nvar hook=[];\n_pendingScripts[url]=hook;\n\nfunction listener(e){resume();\n\n}\n\nfunction listenerIE(e){if(e.srcElement.readyState==\"loaded\"||e.srcElement.readyState==\"complete\"){\n\n\nhold(0);\nresume();\n}\n}\n\nif(elem.addEventListener)elem.addEventListener(\"load\",listener,false);else{\n\n\n\nelem.attachEvent(\"onreadystatechange\",listenerIE);\n}\n\n\ndocument.getElementsByTagName(\"head\")[0].appendChild(elem);\nelem.src=url;\n}retract{\n\n_pendingScripts[url]=null;\n}finally{\n\nif(elem.removeEventListener)elem.removeEventListener(\"load\",listener,false);else elem.detachEvent(\"onreadystatechange\",listenerIE);\n\n\n\n}\n\n_pendingScripts[url]=null;\n_loadedScripts[url]=true;\nfor(var i=0;i<hook.length;++i)hook[i]();\n\n}\n};\n";__oni_rt.modsrc['jquery-binding']="var jQuery;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction installMethods(obj,methods,prefix){var stub={};\n\nfor(var i=0,m;m=methods[i];i++ ){\nstub[prefix(m[0])]=(function(name,cbindex){return function(){\nvar args=Array.prototype.slice.call(arguments,0);\n\nvar rv;\ntry{\nwaitfor(rv){\nargs[cbindex]=resume;\nthis[name].apply(this,args);\n}\n}finally{\n\nif(name==\"bind\")this[\"unbind\"].call(this,args[0],args[cbindex]);\n\nif(name==\"live\")this[\"die\"].call(this,args[0],args[cbindex]);\n\n}\nreturn rv;\n};\n})(m[0],m[1]);\n}\nobj.extend(stub);\n}\n\nfunction installPlugin($,prefix){installMethods($,[[\"get\",2],[\"post\",2],[\"getJSON\",2],[\"getScript\",1]],prefix);\n\ninstallMethods($.fn,[[\"animate\",3],[\"show\",1],[\"hide\",1],[\"load\",2],[\"bind\",2],[\"live\",2]],prefix);\n\n\n$.each((\"blur focus focusin focusout load resize scroll unload click dblclick \"+\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \"+\"change select submit keydown keypress keyup error\").split(\" \"),function(i,name){\n\n$.fn[prefix(name)]=function(){\nreturn this[prefix(\"bind\")](name);\n\n};\n});\n$.fn.waitFor=$.fn[prefix(\"bind\")];\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction defaultPrefix(name){return \"$\"+name;\n\n\n}\n\nexports.install=function(opts){opts=opts||{};\n\nif(opts.autoload===undefined)opts.autoload=true;\nif(opts.prefix===undefined)opts.prefix=defaultPrefix;\nif(opts.stratify===undefined)opts.stratify=true;\n\nif(!window[\"jQuery\"]&&opts.autoload){\nexports.load(opts);\n}\n\nif(opts.stratify){\ninstallPlugin(window.jQuery,opts.prefix);\n}\n\nreturn window.jQuery;\n};\n\nexports.load=function(opts){if(!window[\"jQuery\"]){\n\nvar version=opts.version||\"1.4.2\";\nvar url=opts.url||\"http://ajax.googleapis.com/ajax/libs/jquery/\"+version+\"/jquery.min.js\";\nrequire(\"http\").script(url);\n}\n};\n\n\n";__oni_rt.modsrc['lastfm']="var http=require(\"http\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar defaultKey=\"b25b959554ed76058ac220b7b2e0a026\";\n\n\n\n\n\n\nexports.key=defaultKey;\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.get=function(){if(!exports.key){\n\nthrow \"No Last.fm API key supplied\";\n}\nif(exports.key==defaultKey){\n\n\n}\nif(typeof arguments[0]==\"string\"){\nvar params=arguments[1]||{};\nparams.method=arguments[0];\n}else{\n\nvar params=arguments[0]||{};\n}\nvar rv=http.jsonp([\"http://ws.audioscrobbler.com/2.0/\",{api_key:exports.key,format:\"json\",cb:Math.random()},params]);\n\n\n\n\n\n\nif(rv.error){\nvar e=new Error(rv.message);\ne.code=rv.error;\nthrow e;\n}\n\nvar count=0;\nvar first;\nfor(first in rv){if(++count>1)break}\nif(count==1)return rv[first];\nreturn rv;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";__oni_rt.modsrc['twitter']="var http=require(\"http\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar common=require(\"common\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.initAnywhere=function(settings){settings=common.mergeSettings({v:\"1\"},settings);\n\n\n\nif(!window[\'twttr\'])require(\"http\").script([\"http://platform.twitter.com/anywhere.js\",settings]);\n\n\n\n\ntry{\nwaitfor(var _t){\ntwttr.anywhere(resume);\n};\n}catch(e){\n\n\n\n\nif(!(e instanceof Error))e=new Error(e);\n\nthrow e;\n}\n\nvar _tw=twttr.anywhere._instances[_t.version].contentWindow.twttr;\n\n\n\n\n\n\n\n\n\n\n\n\n_t.call=function(method,params){waitfor(var rv,success){\n\nparams=params||{};\n_tw.anywhere.remote.call(method,[params],{success:function(rv){\nresume(rv,true)},error:function(rv){\nresume(rv,false)}});\n\n}\nif(!success)throw (rv?rv:\"twitter request error\");\nreturn rv;\n};\n\n_t.waitforEvent=function(name){waitfor(var rv){\n\n_t.one(name,resume);\n}\nreturn rv;\n};\nreturn _t;\n};\n\n\n\n\n\n\n\nexports.getProfile=function(id){return http.jsonp(\"http://api.twitter.com/1/users/show/\"+id+\".json\");\n\n};\n\n\n\n\n\n\n\n\nexports.get=function(id,limit){limit=limit||10;\n\nreturn http.jsonp([\"http://twitter.com/status/user_timeline/\"+id+\".json\",{count:limit}]);\n};\n\n\n\n\n\n\n\n\nexports.search=function(query,params){return http.jsonp([\"http://search.twitter.com/search.json\",{q:query},params]);\n\n};\n\n";__oni_rt.modsrc['yql']="var http=require(\"http\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.query=function(statement,params){var url=\"http://query.yahooapis.com/v1/public/yql\";\n\n\nparams=params||{};\nif(params.communitytables){\ndelete params.communitytables;\nparams.env=\"store://datatables.org/alltableswithkeys\";\n}\nvar rv=http.jsonp([url,{q:statement,format:\"json\"},params]);\nif(rv[\"error\"]){\nthrow rv.error.description;\n}\nif(rv.query&&rv.query.results&&rv.query.results.error){\nvar error=rv.query.results.error;\nthrow error.description||error;\n}\nreturn rv.query;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.getFeed=function(url){var q=\"select * from atom where url=@url\";\n\nreturn exports.query(q,{url:url}).results.item;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.getDataURI=function(url){var q=\"select * from data.uri where url=@url\";\n\nreturn exports.query(q,{url:url}).results.url;\n};\n\n\n\n\n\n\n\n\n\n\n\nexports.getFile=function(url){return require(\"base64\").decode(exports.getDataURI(url).split(\"base64,\")[1]);\n\n};\n\n\n\n\nexports.cssGet=function(){var rv=exports.query(\"select * from data.html.cssselect where url=@url and css=@css\",{url:arguments[0],css:arguments[1]},{communitytables:true}).results;\n\n\nreturn rv?rv.results:null;\n};\n";window.eval(__oni_rt.modules["c1"].compile(__oni_rt.src_require,{filename:"apollo-sjs-bootstrap.sjs"}));delete __oni_rt.src_require;if(window.addEventListener)window.addEventListener("load",__oni_rt.runScripts,true);else window.attachEvent("onload",__oni_rt.runScripts);