// (c)2008 Copyright 7su.com

(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(this.Data.Stack===undefined)this.Data.Stack=undefined;with(function(){with(Data){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Data';function Stack()
{this.length=0;}
var proto=Stack.prototype;proto.pop=Array.prototype.pop;proto.push=Array.prototype.push;proto.peek=function()
{return this.length>0?this[this.length-1]:undefined;};proto.isEmpty=function()
{return this.length==0;};return{Stack:Stack};}();}}.call(null)){this.Data.Stack=Stack;}}).call(null);(function(){with(function(){return function(){var VERSION='0.1.0';var NAMESPACE;Function.prototype.bind=function(o){var f=this;return function(){return f.apply(o,arguments);};};return{};}();}.call(null)){}}).call(null);(function(){if(!this.WebBrowser||(typeof this.WebBrowser!='object'&&typeof this.WebBrowser!='function'))this.WebBrowser=new Object();if(!this.WebBrowser.GUI||(typeof this.WebBrowser.GUI!='object'&&typeof this.WebBrowser.GUI!='function'))this.WebBrowser.GUI=new Object();if(!this.WebBrowser.GUI.Event||(typeof this.WebBrowser.GUI.Event!='object'&&typeof this.WebBrowser.GUI.Event!='function'))this.WebBrowser.GUI.Event=new Object();if(this.WebBrowser.GUI.Event.attach===undefined)this.WebBrowser.GUI.Event.attach=undefined;if(this.WebBrowser.GUI.Event.detach===undefined)this.WebBrowser.GUI.Event.detach=undefined;with(function(){with(WebBrowser.GUI.Event){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='WebBrowser.GUI.Event';var listener_id=0;var registry={};attach(window,"unload",function(){for(var i in registry)detach(Number(i));});function attach(element,type,listener,useCapture){if(!element||typeof element!=="object"){throw new TypeError("argument not a element: "+element);}
type=String(type);if(typeof listener!=="function"){throw new TypeError("argument not a function: "+listener);}
useCapture=Boolean(useCapture);function handler(e){e=e||window.event;if(!e.stopPropagation){e.target=e.srcElement;e.currentTarget=this;e.cancelable=true;e.stopPropagation=function stopPropagation(){this.cancelBubble=true;};var prevent_default=false;e.preventDefault=function preventDefault(){prevent_default=true;};}
var ret_val=listener.call(this,e);return prevent_default?false:ret_val;}
if(element.addEventListener){element.addEventListener(type,handler,useCapture);}else if(element.attachEvent){element.attachEvent("on"+type,handler);}else{element["on"+type]=handler;}
var id=listener_id++;registry[id]={element:element,type:type,listener:listener,useCapture:useCapture,handler:handler};return id;}
function detach(element,type,listener,useCapture){if(arguments.length===1&&typeof element==="number"){if(!registry[element])return false;var reg=registry[element];delete registry[element];return detach_aux(reg.element,reg.type,reg.handler,reg.useCapture);}else{if(!element||typeof element!=="object"){throw new TypeError("argument is not an element: "+element);}
type=String(type);if(typeof listener!=="function"){throw new TypeError("argument is not s function: "+listener);}
useCapture=Boolean(useCapture);var ret_val=false;for(var i in registry){var reg=registry[i];if(reg.element===element&&reg.type===type&&reg.listener===listener&&reg.useCapture===useCapture)
{delete registry[i];ret_val=detach_aux(reg.element,reg.type,reg.handler,reg.useCapture)||ret_val;}}
return ret_val;}};function detach_aux(element,type,listener,useCapture){return element.removeEventListener?element.removeEventListener(type,listener,useCapture):element.detachEvent?element.detachEvent("on"+type,listener):delete element["on"+type];}
return{detach:detach,attach:attach};}();}}.call(null)){this.WebBrowser.GUI.Event.detach=detach;this.WebBrowser.GUI.Event.attach=attach;}}).call(null);(function(){this.GLOBAL=this;}).call(null);(function(){if(!this.Math||(typeof this.Math!='object'&&typeof this.Math!='function'))this.Math=new Object();if(this.Math.ToInteger===undefined)this.Math.ToInteger=undefined;if(this.Math.ToInt32===undefined)this.Math.ToInt32=undefined;if(this.Math.ToUInt32===undefined)this.Math.ToUInt32=undefined;if(this.Math.ToUInt16===undefined)this.Math.ToUInt16=undefined;with(function(){with(Math){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Math';function ToInteger(n){return n<0?ceil(n):floor(n)||0;}
function ToInt32(n){return n|0;}
function ToUInt32(n){return n>>>0;}
function ToUInt16(n){return n&0xFFFF;}
return{ToUInt16:ToUInt16,ToUInt32:ToUInt32,ToInt32:ToInt32,ToInteger:ToInteger};}();}}.call(null)){this.Math.ToUInt16=ToUInt16;this.Math.ToUInt32=ToUInt32;this.Math.ToInt32=ToInt32;this.Math.ToInteger=ToInteger;}}).call(null);(function(){if(!this.WebBrowser||(typeof this.WebBrowser!='object'&&typeof this.WebBrowser!='function'))this.WebBrowser=new Object();if(!this.WebBrowser.ScriptExecuter||(typeof this.WebBrowser.ScriptExecuter!='object'&&typeof this.WebBrowser.ScriptExecuter!='function'))this.WebBrowser.ScriptExecuter=new Object();if(this.WebBrowser.ScriptExecuter.register===undefined)this.WebBrowser.ScriptExecuter.register=undefined;if(this.WebBrowser.ScriptExecuter.exec===undefined)this.WebBrowser.ScriptExecuter.exec=undefined;with(function(){with(WebBrowser.ScriptExecuter){return function(){var VERSION;var NAMESPACE;NAMESPACE='WebBrowser.ScriptExecuter';var executers={};var default_type="text/javascript";function register(type,exec){if(typeof exec!="function")throw new TypeError("function required, but got: "+exec);executers[String(type).toLowerCase()]=exec;}
function exec(){var metas=document.getElementsByTagName("META");for(var i=0;i<metas.length;i++){if(String(metas[i].httpEquiv).match(/^Content-Script-Type$/i)){default_type=metas[i].content;}}
var scripts=document.getElementsByTagName("SCRIPT");for(var i=0;i<scripts.length;i++){(function(el){setTimeout(function(){exec_aux(el);},0);})(scripts[i]);}}
function exec_aux(el){var mime=parseMIMEType(el.type?el.type:default_type);if(executers[mime.type]){if(el.src){var req=createXHR();req.open("GET",el.src,true);req.onreadystatechange=function(){if(req.readyState==4)rest(req.responseText);};req.send(null);}else{rest(el.innerHTML);}}
function rest(source){el.parentNode.removeChild(el);executers[mime.type](source,mime.attr);}}
function createXHR(){try{return new XMLHttpRequest();}catch(_){try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(_){return new ActiveXObject("Microsoft.XMLHTTP");}}}
var NOT_TSPECIAL='[^][()<>@,;:\\\\"/?=\\x00-\\x20]';var TOKEN="(?:"+NOT_TSPECIAL+"+)";var MIME_TYPE="(?:"+TOKEN+"/"+TOKEN+")";var QUOTED_STRING='(?:"[^"]*(?:\\\\.[^"]*)*")';var VALUE="(?:"+TOKEN+"|"+QUOTED_STRING+")";function parseMIMEType(text){text=String(text);var re=new RegExp("^"+MIME_TYPE,"g");re.lastIndex=0;var result=re.exec(text);if(!result)return{type:text.toLowerCase(),attr:{}};var type=result[0].toLowerCase();var attr={};text=text.substring(re.lastIndex);re=new RegExp("^\\s*;\\s*("+TOKEN+")\\s*=\\s*("+VALUE+")","g");re.lastIndex=0;while(result=re.exec(text)){attr[result[1].toLowerCase()]=result[2];text=text.substring(re.lastIndex);re.lastIndex=0;}
return{type:type,attr:attr};}
if(window.addEventListener){window.addEventListener("load",exec,false);}else if(window.attachEvent){window.attachEvent("onload",exec);}else{if(window.onload){var temp=window.onload;window.onload=function(){var r=temp.apply(this,arguments);exec();return r;};}else{window.onload=exec;}}
return{register:register,exec:exec};}();}}.call(null)){this.WebBrowser.ScriptExecuter.register=register;this.WebBrowser.ScriptExecuter.exec=exec;}}).call(null);(function(){if(!this.JSON||(typeof this.JSON!='object'&&typeof this.JSON!='function'))this.JSON=new Object();if(this.JSON.dump===undefined)this.JSON.dump=undefined;with(function(){with(JSON){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='JSON';var DUMPER="JSON.dumper";function dump(data,opts){opts=opts||{};var indent=String(opts.indent);if(!indent.match(/^\s*$/))indent="  ";return dump_main(data,{pretty:opts.pretty,indent:indent,deflate:opts.deflate});}
function dump_main(data,opts){switch(typeof data){case"undefined":return opts.deflate?'(void 0)':'"undefined"';case"boolean":case"number":return String(data);case"string":return dump_string(data);case"function":case"object":if(data===null){return"null";}else if(typeof data[DUMPER]=="function"){return data[DUMPER](opts);}else if(data instanceof Array){var arr=[];for(var i=0;i<data.length;i++)arr[i]=dump_main(data[i],opts);if(opts.pretty){return"[\n"+arr.join(",\n").replace(/^/mg,opts.indent)+"\n]";}else{return"["+arr.join(",")+"]";}}else{var arr=[];for(var i in data){if(data.hasOwnProperty(i)){arr.push(dump_string(i)+":"+dump_main(data[i],opts));}}
if(opts.pretty){return"{\n"+arr.join(",\n").replace(/^/mg,opts.indent)+"\n}";}else{return"{"+arr.join(",")+"}";}}}}
function dump_string(str){return'"'+str.replace(/[^\u0020-\u0021\u0023-\u005B\u005D-\u007E]/g,function(c){c=c.charCodeAt(0);switch(c){case'"':return'\\"';case'\\':return'\\\\';case'\b':return'\\b';case'\f':return'\\f';case'\n':return'\\n';case'\r':return'\\r';case'\t':return'\\t';default:c=c.toString(16);while(c.length<4)c="0"+c;return"\\u"+c;}})+'"';}
String.prototype[DUMPER]=function(opts){return opts.deflate?"new String("+dump_string(this.toString())+")":dump_string(this.toString());};Boolean.prototype[DUMPER]=function(opts){return opts.deflate?"new Boolean("+this.toString()+")":this.toString();};Number.prototype[DUMPER]=function(opts){return opts.deflate?"new Number("+this.toString()+")":this.toString();};Date.prototype[DUMPER]=function(opts){return opts.deflate?"new Date("+this.valueOf()+")":dump_string(this.toString());};RegExp.prototype[DUMPER]=function(opts){return opts.deflate?this.toString():dump_string(this.toString());};Function.prototype[DUMPER]=function(opts){return opts.deflate?this.toString():dump_string(this.toString());};return{dump:dump};}();}}.call(null)){this.JSON.dump=dump;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Data.Cons.Cell===undefined)this.Data.Cons.Cell=undefined;if(this.Data.Cons.Nil===undefined)this.Data.Cons.Nil=undefined;if(this.Data.Cons.nil===undefined)this.Data.Cons.nil=undefined;if(this.Data.Cons.cons===undefined)this.Data.Cons.cons=undefined;if(this.Data.Cons.car===undefined)this.Data.Cons.car=undefined;if(this.Data.Cons.cdr===undefined)this.Data.Cons.cdr=undefined;with(function(){with(Data.Cons){return function(){var VERSION='0.2.0';var NAMESPACE;NAMESPACE='Data.Cons';function Cell(car,cdr){this.car=car;this.cdr=cdr;}
var proto=Cell.prototype;proto.toString=function(){return"("+this.car+" . "+this.cdr+")";};proto.toLocaleString=function(){return"("
+(this.car==null?String(this.car):this.car.toLocaleString)
+" . "
+(this.cdr==null?String(this.cdr):this.cdr.toLocaleString)
+")";};proto.isNil=function(){return false;};function Nil(){this.car=this;this.cdr=this;}
var proto=Nil.prototype=new Cell();proto.constructor=Nil;proto.toString=proto.toLocaleString=function(){return"nil";};proto.isNil=function(){return true;};function nil(){return new Nil();};function cons(car,cdr){return new Cell(car,cdr);}
function car(cell){return cell.car;}
function cdr(cell){return cell.cdr;}
return{nil:nil,Nil:Nil,car:car,Cell:Cell,cdr:cdr,cons:cons};}();}}.call(null)){this.Data.Cons.nil=nil;this.Data.Cons.Nil=Nil;this.Data.Cons.car=car;this.Data.Cons.Cell=Cell;this.Data.Cons.cdr=cdr;this.Data.Cons.cons=cons;}}).call(null);(function(){if(!this.Util||(typeof this.Util!='object'&&typeof this.Util!='function'))this.Util=new Object();if(!this.Util.Arrayize||(typeof this.Util.Arrayize!='object'&&typeof this.Util.Arrayize!='function'))this.Util.Arrayize=new Object();if(this.Util.Arrayize.arrayize===undefined)this.Util.Arrayize.arrayize=undefined;with(function(){with(Util.Arrayize){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Util.Arrayize';var slice=Array.prototype.slice;function arrayize(o){if(!o)return[];try{return slice.call(o,0);}catch(e){var r=[];for(var i=0;i<o.length;i++){r[i]=o[i];}
return r;}}
return{arrayize:arrayize};}();}}.call(null)){this.Util.Arrayize.arrayize=arrayize;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.Loop||(typeof this.Data.Functional.Loop!='object'&&typeof this.Data.Functional.Loop!='function'))this.Data.Functional.Loop=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(this.Data.Functional.discontinue===undefined)this.Data.Functional.discontinue=undefined;if(this.Data.Functional.DiscontinueException===undefined)this.Data.Functional.DiscontinueException=undefined;if(this.Data.Functional.ignore===undefined)this.Data.Functional.ignore=undefined;if(this.Data.Functional.IgnoreException===undefined)this.Data.Functional.IgnoreException=undefined;if(this.Data.Functional.return_list===undefined)this.Data.Functional.return_list=undefined;if(this.Data.Functional.ReturnListException===undefined)this.Data.Functional.ReturnListException=undefined;if(this.Data.Functional.Loop.EndOfLoopException===undefined)this.Data.Functional.Loop.EndOfLoopException=undefined;if(this.Data.Functional.Loop.wrap_for_forEach===undefined)this.Data.Functional.Loop.wrap_for_forEach=undefined;if(this.Data.Functional.Loop.wrap_for_fold===undefined)this.Data.Functional.Loop.wrap_for_fold=undefined;if(this.Data.Functional.Loop.wrap_for_map===undefined)this.Data.Functional.Loop.wrap_for_map=undefined;with(function(){with(Data.Functional.Loop){with(Data.Functional){return function(){var VERSION='0.5.0';var NAMESPACE;NAMESPACE='Data.Functional';function discontinue(){throw new DiscontinueException(arguments);}
function DiscontinueException(args){this.args=args;}
var proto=DiscontinueException.prototype;proto.name=NAMESPACE+".DiscontinueException";proto.message="unusual use of `discontinue' (this should be caught by `forEach' or other iteration-methods).";function ignore(){throw new IgnoreException(arguments);}
function IgnoreException(args){this.args=args;}
var proto=IgnoreException.prototype;proto.name=NAMESPACE+".IgnoreException";proto.message="unusual use of `ignore' (this should be caught by `forEach' or other iteration-methods).";function return_list(){throw new ReturnListException(arguments);}
function ReturnListException(args){this.args=args;}
var proto=ReturnListException.prototype;proto.name=NAMESPACE+".ReturnListException";proto.message="unusual use of `return_list' (this should be caught by `forEach' or other iteration-methods).";NAMESPACE='Data.Functional.Loop';function EndOfLoopException(v){this.result=v;}
var proto=EndOfLoopException.prototype;proto.name=NAMESPACE+".EndOfLoopException";proto.message="this should be caught by `forEach' or other iteration-methods";function wrap_for_forEach(t,f){if(typeof f!="function")throw new TypeError("argument to forEach must be function");return function(v){try{f.call(t,v);}catch(e){if(e instanceof DiscontinueException){throw new EndOfLoopException();}else if(e instanceof IgnoreException){}else if(e instanceof ReturnListException){}else{throw e;}}};}
function wrap_for_fold(t,f,s){if(typeof f!="function")throw new TypeError("argument to fold must be function");return function(v){try{return s=f.call(t,s,v);}catch(e){if(e instanceof DiscontinueException){throw new EndOfLoopException(e.args[e.args.length-1]);}else if(e instanceof IgnoreException){return s;}else if(e instanceof ReturnListException){return s=f.call(t,s,e.args[e.args.length-1]);}else{throw e;}}};}
function wrap_for_map(t,f,a){if(typeof f!="function")throw new TypeError("argument to map must be function");if(typeof a!="function")throw new TypeError("the third argument to wrap_for_map must be function");return function(v){try{a.call(null,f.call(t,v));}catch(e){if(e instanceof DiscontinueException){a.apply(null,e.args);throw new EndOfLoopException();}else if(e instanceof IgnoreException){}else if(e instanceof ReturnListException){a.apply(null,e.args);}else{throw e;}}};}
return{DiscontinueException:DiscontinueException,wrap_for_forEach:wrap_for_forEach,wrap_for_map:wrap_for_map,ignore:ignore,discontinue:discontinue,ReturnListException:ReturnListException,wrap_for_fold:wrap_for_fold,return_list:return_list,IgnoreException:IgnoreException,EndOfLoopException:EndOfLoopException};}();}}}.call(null)){this.Data.Functional.DiscontinueException=DiscontinueException;this.Data.Functional.Loop.wrap_for_forEach=wrap_for_forEach;this.Data.Functional.Loop.wrap_for_map=wrap_for_map;this.Data.Functional.ignore=ignore;this.Data.Functional.discontinue=discontinue;this.Data.Functional.ReturnListException=ReturnListException;this.Data.Functional.Loop.wrap_for_fold=wrap_for_fold;this.Data.Functional.return_list=return_list;this.Data.Functional.IgnoreException=IgnoreException;this.Data.Functional.Loop.EndOfLoopException=EndOfLoopException;}}).call(null);(function(){if(!this.Util||(typeof this.Util!='object'&&typeof this.Util!='function'))this.Util=new Object();if(!this.Util.Arrayize||(typeof this.Util.Arrayize!='object'&&typeof this.Util.Arrayize!='function'))this.Util.Arrayize=new Object();with(function(){with(Util.Arrayize){return function(){var VERSION='0.0.0';var NAMESPACE;var null_constructor=function(){};Function.prototype.extend=function extend(init,props){if(typeof init!=="function")throw new TypeError("function is expected: "+init);if(props==null)props={};var SuperClass=this;var SubClass=function(){var self=this;var super_is_called=false;function super_call(){if(super_is_called)throw new Error("super-constructor has already been called");super_is_called=true;var ret_val=SuperClass.apply(self,arguments);if(ret_val instanceof Object){for(var i in ret_val){if(ret_val.hasOwnProperty(i))self[i]=ret_val[i];}}
return ret_val;}
arguments=arrayize(arguments);arguments.unshift(super_call);return init.apply(self,arguments);};null_constructor.prototype=SuperClass.prototype;var proto=SubClass.prototype=new null_constructor;proto.constructor=SubClass;proto.$super=function(prop){if(!arguments.length)return SuperClass;var value=SuperClass.prototype[prop];if(typeof value==="function"){return value.bind(this);}else{return value;}};for(var i in props)proto[i]=props[i];return SubClass;};return{};}();}}.call(null)){}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(this.Data.Error.Error===undefined)this.Data.Error.Error=undefined;if(this.Data.Error.Exception===undefined)this.Data.Error.Exception=undefined;with(function(){with(Data.Error){return function(){var VERSION='0.3.0';var NAMESPACE;NAMESPACE='Data.Error';var Error=GLOBAL.Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".Error",message:"something's wrong",toString:function(){var s=String(this.message);s=s?this.name+": "+s:this.name;if(this.fileName){s+=" @"+this.fileName+":"+this.lineNumber;}
return s;}});var Exception=GLOBAL.Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".Exception",message:"an exception has occurred",toString:function(){var s=String(this.message);s=s?this.name+": "+s:this.name;if(this.fileName){s+=" @"+this.fileName+":"+this.lineNumber;}
return s;}});return{Error:Error,Exception:Exception};}();}}.call(null)){this.Data.Error.Error=Error;this.Data.Error.Exception=Exception;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(this.Data.Error.IllegalStateError===undefined)this.Data.Error.IllegalStateError=undefined;with(function(){with(Data.Error){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Data.Error';var IllegalStateError=Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".IllegalStateError",message:"illegal state"});return{IllegalStateError:IllegalStateError};}();}}.call(null)){this.Data.Error.IllegalStateError=IllegalStateError;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(this.Data.Error.UnimplementedMethodError===undefined)this.Data.Error.UnimplementedMethodError=undefined;with(function(){with(Data.Error){return function(){var VERSION='0.3.0';var NAMESPACE;NAMESPACE='Data.Error';var UnimplementedMethodError=Error.extend(function($super,method,invocant,message){if(message!==undefined){$super(message);}else{$super("an required method `"+method+"' has not been implemented");}
this.method=method;this.invocant=invocant;},{name:NAMESPACE+".UnimplementedMethodError"});return{UnimplementedMethodError:UnimplementedMethodError};}();}}.call(null)){this.Data.Error.UnimplementedMethodError=UnimplementedMethodError;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(this.Data.Iterator.NoSuchElementError===undefined)this.Data.Iterator.NoSuchElementError=undefined;with(function(){with(Data.Error){with(Data.Iterator){return function(){var VERSION='0.2.0';var NAMESPACE;NAMESPACE='Data.Iterator';var NoSuchElementError=Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".NoSuchElementError",message:"no such element"});return{NoSuchElementError:NoSuchElementError};}();}}}.call(null)){this.Data.Iterator.NoSuchElementError=NoSuchElementError;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.Loop||(typeof this.Data.Functional.Loop!='object'&&typeof this.Data.Functional.Loop!='function'))this.Data.Functional.Loop=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(this.Data.Functional.Enumerable===undefined)this.Data.Functional.Enumerable=undefined;if(this.Data.Functional.EmptyEnumerationError===undefined)this.Data.Functional.EmptyEnumerationError=undefined;with(function(){with(Data.Error){with(Data.Functional.Loop){with(Data.Functional){return function(){var VERSION='0.5.0';var NAMESPACE;NAMESPACE='Data.Functional';function Enumerable(){}
var proto=Enumerable.prototype;var obj_name="[object "+NAMESPACE+".Enumerable]";proto.toString=function(){return obj_name;};proto.iterator=function(){throw new UnimplementedMethodError("iterator",this);};proto.forEach=function(f){var ret_val;f=wrap_for_forEach(this,f);for(var it=this.iterator();!it.isTail();it=it.next()){try{f(it.value());}catch(e){if(e instanceof EndOfLoopException)return;else throw e;}}};proto.fold=function(f,s){f=wrap_for_fold(this,f,s);for(var it=this.iterator();!it.isTail();it=it.next()){try{s=f(it.value());}catch(e){if(e instanceof EndOfLoopException)return e.result;else throw e;}}
return s;};proto.fold1=function(f){var it=this.iterator();if(it.isTail())throw new EmptyEnumerationError();var s=it.value();it=it.next();f=wrap_for_fold(this,f,s);for(;!it.isTail();it=it.next()){try{s=f(it.value());}catch(e){if(e instanceof EndOfLoopException)return e.result;else throw e;}}
return s;};proto.and=function(){return this.fold(function(x,y){return y||discontinue(y);},true);};proto.or=function(){return this.fold(function(x,y){return y&&discontinue(y);},false);};proto.all=function(f){return this.fold(function(x,y){y=f.call(this,y);return y||discontinue(y);},true);};proto.any=function(f){return this.fold(function(x,y){y=f.call(this,y);return y&&discontinue(y);},false);};var EmptyEnumerationError=Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".EmptyEnumerationError",message:"empty enumeration"});return{EmptyEnumerationError:EmptyEnumerationError,Enumerable:Enumerable};}();}}}}.call(null)){this.Data.Functional.EmptyEnumerationError=EmptyEnumerationError;this.Data.Functional.Enumerable=Enumerable;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(this.Data.Iterator.Iterator===undefined)this.Data.Iterator.Iterator=undefined;with(function(){with(Data.Error){with(Data.Iterator){return function(){var VERSION='0.2.1';var NAMESPACE;NAMESPACE='Data.Iterator';function Iterator(){}
var proto=Iterator.prototype;var obj_name="[object "+NAMESPACE+".Iterator]";proto.toString=function(){return obj_name;};proto.isTail=function(){throw new UnimplementedMethodError("isTail",this);};proto.value=function(){throw new UnimplementedMethodError("value",this);};proto.next=function(){throw new UnimplementedMethodError("next",this);};proto.isBoundTo=function(list){return false;};proto.find=function(f){for(var it=this;!it.isTail();it=it.next()){if(f(it.value()))break;}
return it;};return{Iterator:Iterator};}();}}}.call(null)){this.Data.Iterator.Iterator=Iterator;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.Loop||(typeof this.Data.Functional.Loop!='object'&&typeof this.Data.Functional.Loop!='function'))this.Data.Functional.Loop=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(this.Data.Functional.Collection===undefined)this.Data.Functional.Collection=undefined;with(function(){with(Data.Error){with(Data.Functional.Loop){with(Data.Functional){return function(){var VERSION='0.5.0';var NAMESPACE;NAMESPACE='Data.Functional';function Collection(){}
var proto=Collection.prototype=new Enumerable();proto.constructor=Collection;var obj_name="[object "+NAMESPACE+".Collection]";proto.toString=function(){return obj_name;};proto.toArray=function(){var a=[];this.forEach(function(it){a.push(it);});return a;};proto.add=function(){throw new UnimplementedMethodError("add",this);};proto.addAll=function(){var self=this;var changed=false;for(var i=0;i<arguments.length;i++){var c=arguments[i];if(c instanceof Collection){c.forEach(function(it){changed=self.add(it)||changed;});}else if(c instanceof Array){changed=this.add.apply(this,c)||changed;}else{chagned=this.add(c)||changed;}}
return changed;};proto.removeAt=function(it){throw new UnimplementedMethodError("removeAt",this);};proto.isEmpty=function(){return this.iterator().isTail();};proto.empty=function(){var it;while(!(it=this.iterator()).isTail())this.removeAt(it);};proto.size=function(){var i=0;this.forEach(function(){++i;});return i;};proto.emptyCopy=function(){return new this.constructor();};proto.copy=function(){var c=this.emptyCopy();this.forEach(function(it){c.add(it);});return c;};proto.map=function(f){var c=this.emptyCopy();f=wrap_for_map(this,f,function(){c.add.apply(c,arguments);});for(var it=this.iterator();!it.isTail();it=it.next()){try{f(it.value());}catch(e){if(e instanceof EndOfLoopException)return c;else throw e;}}
return c;};proto.filter=function(f){return this.map(function(it){if(f.call(this,it))return it;else ignore();});};proto.grep=function(re){if(!(re instanceof RegExp))re=new Regex(re);return this.filter(function(it){return String(it).match(re);});};return{Collection:Collection};}();}}}}.call(null)){this.Data.Functional.Collection=Collection;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(this.Data.Iterator.BidirectionalIterator===undefined)this.Data.Iterator.BidirectionalIterator=undefined;with(function(){with(Data.Error){with(Data.Iterator){return function(){var VERSION='0.2.0';var NAMESPACE;NAMESPACE='Data.Iterator';function BidirectionalIterator(){}
var proto=BidirectionalIterator.prototype=new Iterator();proto.constructor=BidirectionalIterator;var obj_name="[object "+NAMESPACE+".BidirectionalIterator]";proto.toString=function(){return obj_name;};proto.isHead=function(){throw new UnimplementedMethodError("isHead",this);};proto.previous=function(){throw new UnimplementedMethodError("previous",this);};return{BidirectionalIterator:BidirectionalIterator};}();}}}.call(null)){this.Data.Iterator.BidirectionalIterator=BidirectionalIterator;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(this.Data.Functional.Set===undefined)this.Data.Functional.Set=undefined;with(function(){with(Data.Error){with(Data.Iterator){with(Data.Functional){return function(){var VERSION='0.4.0';var NAMESPACE;NAMESPACE='Data.Functional';function Set(){}
var proto=Set.prototype=new Collection();proto.constructor=Set;var obj_name="[object "+NAMESPACE+".Set]";proto.toString=function(){return obj_name;};proto.contains=function(){throw new UnimplementedMethodError("contains",this);};proto.containsAll=function(){for(var i=0;i<arguments.length;i++){var e=arguments[i];if(e instanceof Array){if(!this.contains.apply(this,e))return false;}else if(e instanceof Collection){var self=this;if(!e.all(function(it){return self.contains(it);}))return false;}else{if(!this.contains(e))return false;}}
return true;};proto.remove=function(){throw new UnimplementedMethodError("remove",this);};proto.removeAll=function(){var changed=false;for(var i=0;i<arguments.length;i++){var e=arguments[i];if(e instanceof Array){changed=this.remove.apply(this,e)||changed;}else if(e instanceof Collection){var self=this;e.forEach(function(it){changed=self.remove(it)||changed;});}else{changed=this.remove(e)||changed;}}
return changed;};proto.removeAt=function(it){if(!(it instanceof Iterator))throw new TypeError("the argument is not of type Data.Iterator.Iterator");if(!it.isBoundTo(this))throw new IllegalStateError();var v=it.value();this.remove(v);return v;};proto.retainAll=function(){var temp=this.emptyCopy();temp.addAll.apply(temp,arguments);return this.removeAll(this.filter(function(it){return!temp.contains(it);}));};return{Set:Set};}();}}}}.call(null)){this.Data.Functional.Set=Set;}}).call(null);(function(){if(!this.Math||(typeof this.Math!='object'&&typeof this.Math!='function'))this.Math=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.Loop||(typeof this.Data.Functional.Loop!='object'&&typeof this.Data.Functional.Loop!='function'))this.Data.Functional.Loop=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(this.Data.Functional.List===undefined)this.Data.Functional.List=undefined;with(function(){with(Math){with(Data.Functional.Loop){with(Data.Functional){return function(){var VERSION='0.5.0';var NAMESPACE;NAMESPACE='Data.Functional';function List(){}
var proto=List.prototype=new Collection();proto.constructor=List;proto.head=function(n){if(n<0)return this.tail(-n);return nNextFromHead(this.tail(),n);};proto.tail=function(n){if(n<0)return this.head(-n);return nPreviousFromTail(this.head(),n);};proto.reverseHead=function(n){if(n<0)return this.reverseTail(-n);return nNextFromHead(this.reverseTail(),n);};proto.reverseTail=function(n){if(n<0)return this.reverseHead(-n);return nPreviousFromTail(this.reverseHead(),n);};function nNextFromHead(it,n){var q=[];n=ToInteger(n);if(n==0){while(!it.isHead())it=it.previous();return it;}else{while(n-->0){if(it.isHead())throw new RangeError();q.push(it);it=it.previous();}
while(!it.isHead()){q.shift();q.push(it);it=it.previous();}
q.push(it);return q[0];}}
function nPreviousFromTail(it,n){var q=[];n=ToInteger(n);if(n==0){while(!it.isTail())it=it.next();return it;}else{while(n-->0){if(it.isTail())throw new RangeError();q.push(it);it=it.next();}
while(!it.isTail()){q.shift();q.push(it);it=it.next();}
q.push(it);return q[0];}}
proto.iterator=function(){return this.head.apply(this,arguments);};proto.add=function(){if(arguments.length==0)return false;for(var i=0;i<arguments.length;i++){this.tail().insert(arguments[i]);}
return true;};proto.get=function(it){if(!(it instanceof List.Iterator&&it.isBoundTo(this))){try{it=this.head(it);}catch(e){if(e instanceof RangeError){return undefined;}else{throw e;}}}
if(it.isTail())return undefined;else return it.value();};proto.set=function(it,v){if(!(it instanceof List.Iterator&&it.isBoundTo(this))){it=this.head(it);}
return it.assign(v);};proto.insertAt=function(it,v){if(!(it instanceof List.Iterator&&it.isBoundTo(this))){it=this.head(it);}
return it.insert(v);};proto.removeAt=function(it){if(!(it instanceof List.Iterator&&it.isBoundTo(this))){it=this.head(it);}
return it.remove();};proto.pop=function(){return this.reverseHead().remove();};proto.push=function(){this.add.apply(this,arguments);return this.size();};proto.shift=function(){return this.head().remove();};proto.unshift=function(){for(var i=arguments.length-1;i>=0;i--){this.head().insert(arguments[i]);}
return this.size();};proto.join=function(){var arr=this.toArray();return arr.join.apply(arr,arguments);};proto.toString=function(){var arr=this.toArray();return arr.toString.apply(arr,arguments);};proto.toLocaleString=function(){var arr=this.toArray();return arr.toLocaleString.apply(arr,arguments);};proto.reverse=function(){var r=this.emptyCopy();for(var it=this.reverseHead();!it.isTail();it=it.next()){r.add(it.value());}
return r;};proto.slice=function(start,end){if(!(start instanceof List.Iterator&&end instanceof List.Iterator&&start.isBoundTo(this)&&end.isBoundTo(this)&&start.constructor===end.constructor))
{try{start=this.head(start);}catch(e){if(e instanceof RangeError){start=start<0?this.head():this.tail();}else{throw e;}}
if(end===undefined){end=this.tail();}else{try{end=this.head(end);}catch(e){if(e instanceof RangeError){end=end<0?this.head():this.tail();}else{throw e;}}}}
var l=this.emptyCopy();if(start.compareTo(end)>=0)return l;while(!start.equals(end)){l.add(start.value());start=start.next();}
return l;};proto.concat=function(){var list=this.emptyCopy();arguments[-1]=this;for(var i=-1;i<arguments.length;i++){var e=arguments[i];if(e instanceof List){e.forEach(function(it){list.add(it)});}
else if(e instanceof Array){for(var j=0;j<e.length;j++)list.add(e[j])}
else{list.add(e);}}
return list;};proto.foldl=proto.fold;proto.foldl1=proto.fold1;proto.foldr=function(f,s){var g=wrap_for_fold(this,function(x,y){return f.call(this,y,x);},s);for(var it=this.reverseHead();!it.isTail();it=it.next()){try{s=g(it.value());}catch(e){if(e instanceof EndOfLoopException)return e.result;else throw e;}}
return s;};proto.foldr1=function(f){var it=this.reverseHead();if(it.isTail())throw new EmptyEnumerationError();var s=it.value();it=it.next();var g=wrap_for_fold(this,function(x,y){return f.call(this,y,x);},s);for(;!it.isTail();it=it.next()){try{s=g(it.value());}catch(e){if(e instanceof EndOfLoopException)return e.result;else throw e;}}
return s;};return{List:List};}();}}}}.call(null)){this.Data.Functional.List=List;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.List||(typeof this.Data.Functional.List!='object'&&typeof this.Data.Functional.List!='function'))this.Data.Functional.List=new Object();if(this.Data.Functional.List.Iterator===undefined)this.Data.Functional.List.Iterator=undefined;with(function(){with(Data.Error){with(Data.Iterator){with(Data.Functional.List){return function(){var VERSION='0.5.0';var NAMESPACE;NAMESPACE='Data.Functional.List';function Iterator(){}
var proto=Iterator.prototype=new BidirectionalIterator();proto.constructor=Iterator;var obj_name="[object "+NAMESPACE+".Iterator]";proto.toString=function(){return obj_name;};proto.assign=function(v){throw new UnimplementedMethodError("assign",this);};proto.insert=function(v){throw new UnimplementedMethodError("insert",this);};proto.remove=function(){throw new UnimplementedMethodError("remove",this);};proto.equals=function(that){return this.compareTo(that)===0;};proto.distance=proto.compareTo=function(that){if(!(that instanceof Iterator))return undefined;for(var i=0,l=this,r=that;;i--,l=l.next()){if(l.equals(r))return i;if(l.isTail())break;}
for(var i=1,l=that.next(),r=this;;i++,l=l.next()){if(l.equals(r))return i;if(l.isTail())break;}
return undefined;};return{Iterator:Iterator};}();}}}}.call(null)){this.Data.Functional.List.Iterator=Iterator;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.List||(typeof this.Data.Functional.List!='object'&&typeof this.Data.Functional.List!='function'))this.Data.Functional.List=new Object();if(this.Data.Functional.List.ReverseIterator===undefined)this.Data.Functional.List.ReverseIterator=undefined;with(function(){with(Data.Functional.List){return function(){var VERSION='0.4.0';var NAMESPACE;NAMESPACE='Data.Functional.List';function ReverseIterator(it){this._it=it;}
var proto=ReverseIterator.prototype=new Iterator();proto.constructor=ReverseIterator;proto.isBoundTo=function(that){return this._it.isBoundTo(that);};proto.isTail=function(){return this._it.isHead();};proto.isHead=function(){return this._it.isTail();};proto.next=function(){return new ReverseIterator(this._it.previous());};proto.previous=function(){return new ReverseIterator(this._it.next());};proto.value=function(){return this._it.previous().value();};proto.assign=function(v){return this._it.previous().assign(v);};proto.insert=function(v){return this._it.insert(v);};proto.remove=function(){return this._it.previous().remove();};proto.equals=function(that){if(!(that instanceof ReverseIterator))return false;return this._it.equal(taht._it);};proto.compareTo=function(that){if(!(that instanceof ReverseIterator))return undefined;var c=this._it.compareTo(that._it);if(isNaN(d))return c;return-c;};proto.distance=function(that){if(!(that instanceof ReverseIterator))return undefined;var d=this._it.distance(that._it);if(isNaN(d))return d;return-d;};return{ReverseIterator:ReverseIterator};}();}}.call(null)){this.Data.Functional.List.ReverseIterator=ReverseIterator;}}).call(null);(function(){with(function(){return function(){var VERSION='0.5.0';var NAMESPACE;return{};}();}.call(null)){}}).call(null);(function(){if(!this.Math||(typeof this.Math!='object'&&typeof this.Math!='function'))this.Math=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.Loop||(typeof this.Data.Functional.Loop!='object'&&typeof this.Data.Functional.Loop!='function'))this.Data.Functional.Loop=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Data.Cons.list===undefined)this.Data.Cons.list=undefined;if(this.Data.Cons.InsertAtHeadError===undefined)this.Data.Cons.InsertAtHeadError=undefined;if(this.Data.Cons.RemoveHeadError===undefined)this.Data.Cons.RemoveHeadError=undefined;with(function(){with(Math){with(Data.Error){with(Data.Iterator){with(Data.Functional.Loop){with(Data.Functional){with(Data.Cons){return function(){var VERSION='0.2.0';var NAMESPACE;NAMESPACE='Data.Cons';var proto=new List();proto.toString=Cell.prototype.toString;proto.toLocaleString=Cell.prototype.toLocaleString;proto.isNil=Cell.prototype.isNil;Cell.prototype=proto;proto.constructor=Cell;proto=new Cell();proto.toString=Nil.prototype.toString;proto.toLocaleString=Nil.prototype.toLocaleString;proto.isNil=Nil.prototype.isNil;Nil.prototype=proto;proto.constructor=Nil;function list(){var head,cell;head=cell=new Cell(null,new Nil());for(var i=0;i<arguments.length;i++){cell=cell.cdr=new Cell(arguments[i],cell.cdr);}
return head.cdr;}
proto=Cell.prototype;proto.iterator=proto.head=function(n){n=ToInteger(n);if(n<0)return this.tail(-n);try{for(var it=new Iterator(this,this,null);n>0;it=it.next(),n--);return it;}catch(e){if(e instanceof NoSuchElementError){throw new RangeError();}else{throw e;}}};proto.tail=function(n){n=ToInteger(n);if(n<0)return this.head(-n);for(var it=new Iterator(this,this,null);!it.isTail();it=it.next());try{for(;n>0;it=it.previous(),n--);return it;}catch(e){if(e instanceof NoSuchElementError){throw new RangeError();}else{throw e;}}};proto.reverseHead=function(n){return new ReverseIterator(this.tail(n));};proto.reverseTail=function(n){return new ReverseIterator(this.head(n));};proto.get=function(n){if(n instanceof Iterator||n instanceof ReverseIterator){if(!n.isBoundTo(this))throw new IllegalStateError();return n.value();}
n=ToInteger(n);if(n<0)return this.reverse().get(-n-1);var c=this;while(n!==0){c=c.cdr;if(c.isNil())return undefined;n--;}
return c.car;};proto.set=function(n,v){if(n instanceof Iterator||n instanceof ReverseIterator){if(!n.isBoundTo(this))throw new IllegalStateError();return n.assign(v);}
return this.head(n).assign(v);};proto.add=function(){if(arguments.length==0)return false;if(this.isNil())throw new InsertAtHeadError();for(var c=this;!c.cdr.isNil();c=c.cdr);for(var i=0;i<arguments.length;i++){c=c.cdr=new Cell(arguments[i],new Nil());}
return true;};proto.shift=function(){throw new RemoveHeadError();};proto.unshift=function(){throw new InsertAtHeadError();};proto.pop=function(){if(this.isNil())return undefined;if(this.cdr.isNil())throw new RemoveHeadError();for(var c=this.cdr;!c.cdr.cdr.isNil();c=c.cdr);var r=c.cdr.car;c.cdr=c.cdr.cdr;return r;};proto.push=function(){if(arguments.length==0)return this.size();if(this.isEmpty())throw new InsertAtHeadError();for(var l=1,c=this;!c.cdr.isNil();l++,c=c.cdr);for(var i=0;i<arguments.length;i++,l++){c=c.cdr=new Cell(arguments[i],c.cdr);}
return l;};proto.isEmpty=function(){return this.isNil();};proto.empty=function(){if(this.isEmpty())return;throw new RemoveHeadError();};proto.size=function(){for(var i=0,c=this;!c.isNil();i++,c=c.cdr);return i;};proto.copy=function(){if(this.isNil())return new Nil();var head,cell;head=cell=new Cell(this.car,new Nil());for(var c=this.cdr;!c.isNil();c=c.cdr){cell=cell.cdr=new Cell(c.car,cell.cdr);}
return head;};proto.toArray=function(){var a=[];for(var c=this;!c.isNil();c=c.cdr)a.push(c.car);return a;};proto.reverse=function(){var r=new Nil();for(var c=this;!c.isNil();c=c.cdr)r=new Cell(c.car,r);return r;};proto.concat=function(){var head,cell;head=cell=new Cell(null,new Nil());arguments[-1]=this;for(var i=-1;i<arguments.length;i++){var c=arguments[i];if(c instanceof List){c.forEach(function(it){cell=cell.cdr=new Cell(it,cell.cdr);});}else if(c instanceof Array){for(var j=0;j<c.length;j++){cell=cell.cdr=new Cell(c[j],cell.cdr);}}else{cell=cell.cdr=new Cell(c,cell.cdr);}}
return head.cdr;};proto.slice=function(start,end){if(!((start instanceof Iterator&&end instanceof Iterator||start instanceof ReverseIterator&&end instanceof ReverseIterator)&&start.isBoundTo(this)&&end.isBoundTo(this)))
{try{start=this.head(start);}catch(e){if(e instanceof RangeError){start=start<0?this.head():this.tail();}else{throw e;}}
if(end===undefined){end=this.tail();}else{try{end=this.head(end);}catch(e){if(e instanceof RangeError){end=end<0?this.head():this.tail();}else{throw e;}}}}
if(start.compareTo(end)>=0)return new Nil();var head,cell;head=cell=new Cell(null,new Nil());while(!start.equals(end)){cell=cell.cdr=new Cell(start.value(),cell.cdr);start=start.next();}
return head.cdr;}
proto.forEach=function(f){f=wrap_for_forEach(this,f);for(var c=this;!c.isNil();c=c.cdr){try{f(c.car);}catch(e){if(e instanceof EndOfLoopException){return;}else{throw e;}}}};proto.fold=proto.foldl=function(f,s){f=wrap_for_fold(this,f,s);for(var c=this;!c.isNil();c=c.cdr){try{s=f(c.car);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.fold1=proto.foldl1=function(f){if(this.isEmpty())throw new EmptyEnumerationError();var s=this.car;f=wrap_for_fold(this,f,s);for(var c=this.cdr;!c.isNil();c=c.cdr){try{s=f(c.car);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.foldr=function(f,s){return this.reverse().foldl(function(x,y){return f.call(this,y,x);},s);};proto.foldr1=function(f){return this.reverse().foldl1(function(x,y){return f.call(this,y,x);});};proto.map=function(f){if(this.isNil())return new Nil();var head,cell;head=cell=new Cell(null,new Nil());f=wrap_for_map(this,f,function(){for(var i=0;i<arguments.length;i++){cell=cell.cdr=new Cell(arguments[i],cell.cdr);}});for(var c=this;!c.isNil();c=c.cdr){try{f(c.car);}catch(e){if(e instanceof EndOfLoopException){return head.cdr;}else{throw e;}}}
return head.cdr;}
function Iterator(head,cell,prev){this._head=head;this._cell=cell;this._prev=prev;}
var proto=Iterator.prototype=new List.Iterator();proto.constructor=Iterator;proto.isBoundTo=function(that){return this._head===that;};proto.isHead=function(){return this._head===this._cell;};proto.isTail=function(){return this._cell.isNil();};proto.value=function(){return this._cell.car;};proto.assign=function(v){if(this.isTail())this.insert(v);else this._cell.car=v;return v;};proto.insert=function(v){if(this.isHead())throw new InsertAtHeadError();this._cell=this._prev._cell.cdr=new Cell(v,this._cell.cdr);return v;};proto.remove=function(){if(this.isHead())throw new RemoveHeadError();if(this.isTail())throw new IllegalStateError("can't remove at tail");var r=this._cell.car;this._cell=this._prev._cell.cdr=this._cell.cdr;return r;};proto.next=function(){if(this.isTail())throw new NoSuchElementError("no next element");return new Iterator(this._head,this._cell.cdr,this);};proto.previous=function(){if(this.isHead())throw new NoSuchElementError("no previous element");return this._prev;};proto.equals=function(that){return that instanceof Iterator&&that.isBoundTo(this._head)&&this._cell===that._cell;};proto.compareTo=proto.distance=function(that){if(!(that instanceof Iterator&&that.isBoundTo(this._head)))return undefined;for(var i=0,l=this._cell,r=that._cell;!l.isNil();i++,l=l.cdr){if(l===r)return-i;}
for(var i=1,l=that._cell.cdr,r=this._cell;!l.isNil();i++,l=l.cdr){if(l===r)return i;}
return void 0;};function ReverseIterator(){return List.ReverseIterator.apply(this,arguments);}
var proto=ReverseIterator.prototype=new List.ReverseIterator();proto.constructor=ReverseIterator;var InsertAtHeadError=Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".InsertAtHeadError",message:"can't insert at head of cons-list"});var RemoveHeadError=Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".RemoveHeadError",message:"can't remove head of cons-list"});return{InsertAtHeadError:InsertAtHeadError,RemoveHeadError:RemoveHeadError,list:list};}();}}}}}}}.call(null)){this.Data.Cons.InsertAtHeadError=InsertAtHeadError;this.Data.Cons.RemoveHeadError=RemoveHeadError;this.Data.Cons.list=list;}}).call(null);(function(){if(!this.Math||(typeof this.Math!='object'&&typeof this.Math!='function'))this.Math=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.Loop||(typeof this.Data.Functional.Loop!='object'&&typeof this.Data.Functional.Loop!='function'))this.Data.Functional.Loop=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();with(function(){with(Math){with(Data.Error){with(Data.Functional.Loop){with(Data.Functional){return function(){var VERSION='0.5.0';var NAMESPACE;var proto=Array.prototype;for(var i in List.prototype){if(typeof proto[i]!="function")proto[i]=List.prototype[i];}
proto.head=function(n){if(n<0)return this.tail(-n);n=ToInteger(n);if(n>this.length)throw new RangeError();return new Iterator(this,n);};proto.tail=function(n){if(n<0)return this.head(-n);n=ToInteger(n);if(n>this.length)throw new RangeError();return new Iterator(this,this.length-n);};proto.iterator=proto.head;proto.reverseHead=function(n){if(n<0)return this.reverseTail(-n);n=ToInteger(n);if(n>this.length)throw new RangeError();return new ReverseIterator(this,n);};proto.reverseTail=function(n){if(n<0)return this.reverseHead(-n);n=ToInteger(n);if(n>this.length)throw new RangeError();return new ReverseIterator(this,this.length-n);};proto.add=function(){this.push.apply(this,arguments);return true;};proto.get=function(it){if(it instanceof Iterator||it instanceof ReverseIterator){if(it.isBoundTo(this))return it.value();throw new IllegalStateError();}
it=ToInteger(n);if(it<0)it+=this.length;return this[it];};proto.set=function(it,v){if(it instanceof Iterator||it instanceof ReverseIterator){if(it.isBoundTo(this))return it.assign(v);throw new IllegalStateError();}
var n=ToInteger(it);if(n<0)n+=this.length;if(n<0)throw new RangeError("`"+it+"' is too small.");if(n>=this.length)throw new RangeError("`"+it+"' is too large.");return this[n]=v;};proto.insertAt=function(it,v){if(it instanceof Iterator||it instanceof ReverseIterator){if(it.isBoundTo(this))return it.insert(v);throw new IllegalStateError();}
var n=ToInteger(it);if(n<0)n+=this.length;if(n<0)throw new RangeError("`"+it+"' is too small.");if(n>=this.length)throw new RangeError("`"+it+"' is too large.");this.splice(n,0,v);return v;};proto.removeAt=function(it){if(it instanceof Iterator||it instanceof ReverseIterator){if(it.isBoundTo(this))return it.remove();throw new IllegalStateError();}
var n=ToInteger(it);if(n<0)n+=this.length;if(n<0)throw new RangeError("`"+it+"' is too small.");if(n>=this.length)throw new RangeError("`"+it+"' is too large.");return this.splice(n,1)[0];};proto.isEmpty=function(){return this.length==0;};proto.empty=function(){this.length=0;};proto.size=function(){return this.length;};proto.copy=proto.toArray=function(){var a=[];for(var i=0;i<this.length;i++)a[i]=this[i];return a;};proto.forEach=function(f){f=wrap_for_forEach(this,f);for(var i=0;i<this.length;i++){try{f(this[i]);}catch(e){if(e instanceof EndOfLoopException){return;}else{throw e;}}}};proto.fold=proto.foldl=function(f,s){f=wrap_for_fold(this,f,s);for(var i=0;i<this.length;i++){try{s=f(this[i]);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.fold1=proto.foldl1=function(f){if(this.length==0)throw new EmptyEnumerationError();var s=this[0];f=wrap_for_fold(this,f,s);for(var i=1;i<this.length;i++){try{s=f(this[i]);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.foldr=function(f,s){var g=wrap_for_fold(this,function(x,y){return f.call(this,y,x);},s);for(var i=this.length-1;i>=0;i--){try{s=f(this[i]);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.foldr1=function(f){if(this.length==0)throw new EmptyEnumerationError();var s=this[this.length-1];var g=wrap_for_fold(this,function(x,y){return f.call(this,y,x);},s);for(var i=this.length-2;i>=0;i--){try{s=g(this[i]);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.map=function(f){var a=[];f=wrap_for_map(this,f,function(){a.push.apply(a,arguments);});for(var i=0;i<this.length;i++){try{f(this[i]);}catch(e){if(e instanceof EndOfLoopException)return a;else throw e;}}
return a;};var original_concat=proto.concat;proto.concat=function(){for(var i=0;i<arguments.length;i++){var v=arguments[i];if(v instanceof List)arguments[i]=v.toArray();}
return original_concat.apply(this,arguments);};var original_slice=proto.slice;proto.slice=function(start,end){if((start instanceof Iterator&&end instanceof Iterator||start instanceof ReverseIterator&&end instanceof ReverseIterator)&&start.isBoundTo(this)&&end.isBoundTo(this))
{if(start.compareTo(end)>=0)return[];var s=[];do{s.push(start.value());start=start.next();}while(!start.equals(end));return s;}else{return original_slice.apply(this,arguments);}};function Iterator(a,n){this._arr=a;this._pos=n;}
var proto=Iterator.prototype=new List.Iterator();proto.constructor=Iterator;proto.isBoundTo=function(that){return this._arr===that;};proto.isHead=function(){return ToInteger(this._pos)<=0||this._arr.length==0;};proto.isTail=function(){return ToInteger(this._pos)>=this._arr.length||this._arr.length==0;};proto.value=function(){if(this.isTail())return undefined;if(this.isHead())return this._arr[0];else return this._arr[ToInteger(this._pos)];};proto.assign=function(v){if(this.isTail())return this.insert();if(this.isHead())return this._arr[0]=v;else return this._arr[ToInteger(this._pos)]=v;};proto.insert=function(v){var i=ToInteger(this._pos);if(i<=0)i=0;else i=min(i,this._arr.length);return this._arr.insertAt(i,v);};proto.remove=function(){if(this.isTail())throw new IllegalStateError("can't remove at the tail of list");else if(this.isHead())return this._arr.aplice(0,1)[0];else return this._arr.splice(this._pos,1)[0];};proto.next=function(){if(this.isTail())throw new NoSuchElement("no next element");if(this.isHead())return new this.constructor(this._arr,1);else return new this.constructor(this._arr,this._pos+1);};proto.previous=function(){if(this.isHead())throw new NoSuchElement("no previous element");if(this.isTail())return new this.constructor(this._arr,this._arr.length-1);else return new this.constructor(this._arr,this._pos-1);};proto.compareTo=proto.distance=function(that){if(!(that instanceof this.constructor))return undefined;if(this._arr!==that._arr)return undefined;var s=this._arr.length;var l=ToInteger(this._pos);var r=ToInteger(that._pos);if(l<=0&&r<=0||l>=s&&r>=s)return 0;return l-r;};function ReverseIterator(a,n){Iterator.apply(this,arguments);}
var proto=ReverseIterator.prototype=new List.Iterator();for(var i in Iterator.prototype){if(Iterator.prototype.hasOwnProperty(i)&&typeof Iterator.prototype[i]=="function")
{proto[i]=Iterator.prototype[i];}}
proto.constructor=ReverseIterator;proto.value=function(){if(this.isTail())return undefined;if(this.isHead())return this._arr[this._arr.length-1];else return this._arr[this._arr.length-1-ToInteger(this._pos)];};proto.assign=function(v){if(this.isTail())this.insert(v);if(this.isHead())return this._arr[this._arr.length-1]=v;else return this._arr[this._arr.length-1-ToInteger(this._pos)]=v;};proto.insert=function(v){var i=ToInteger(this._pos);if(i<=0)i=0;else i=min(i,this._arr.length);return this._arr.insertAt(this._arr.length-i,v);};proto.remove=function(){if(this.isTail())throw new IllegalStateError("can't remove at the tail of list");if(this.isHead())return this._arr.splice(this._arr.length-1,1)[0];else return this._arr.splice(this._arr.length-1-ToInteger(this._pos),1)[0];};return{};}();}}}}}.call(null)){}}).call(null);(function(){if(!this.Math||(typeof this.Math!='object'&&typeof this.Math!='function'))this.Math=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data.Functional.Loop||(typeof this.Data.Functional.Loop!='object'&&typeof this.Data.Functional.Loop!='function'))this.Data.Functional.Loop=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(this.Data.LinkedList===undefined)this.Data.LinkedList=undefined;with(function(){with(Math){with(Data.Error){with(Data.Iterator){with(Data.Functional.Loop){with(Data.Functional){with(Data){return function(){var VERSION='0.3.1';var NAMESPACE;NAMESPACE='Data';function LinkedList(){this._value=undefined;this._prev=this;this._next=this;this._removed=false;this.add.apply(this,arguments);}
LinkedList.fromCollection=function(){var l=new LinkedList();l.addAll.apply(l,arguments);return l;};function makeContainer(v){return{_value:v,_removed:false};}
var proto=LinkedList.prototype=new List();proto.constructor=LinkedList;function nForward(top,c,n){if(n==0)return c;c=c._next;while(--n>0){if(c===top)throw new RangeError();c=c._next;}
return c;}
function nBackward(top,c,n){if(n==0)return c;c=c._prev;while(--n>0){if(c===top)throw new RangeError();c=c._prev;}
return c;}
proto.head=function(n){if(n<0)return this.tail(-n);return new Iterator(this,nForward(this,this._next,ToInteger(n)));};proto.tail=function(n){if(n<0)return this.head(-n);return new Iterator(this,nBackward(this,this,ToInteger(n)));};proto.reverseHead=function(n){if(n<0)return this.reverseTail(-n);return new ReverseIterator(this,nBackward(this,this._prev,ToInteger(n)));};proto.reverseTail=function(n){if(n<0)return this.reverseHead(-n);return new ReverseIterator(this,nBackward(this,this,ToInteger(n)));};proto.iterator=proto.head;proto.add=function(){if(!arguments.length)return false;var it=new Iterator(this,this);for(var i=0;i<arguments.length;i++)it.insert(arguments[i]);return true;};proto.pop=function(){return(new Iterator(this,this._prev)).remove();};proto.shift=function(){return(new Iterator(this,this._next)).remove();};proto.unshift=function(){var it=new Iterator(this,this._next);for(var i=0;i<arguments.length;i++)it.insert(arguments[i]);return this.size();};proto.isEmpty=function(){return this._next===this;};proto.empty=function(){this._prev=this._next=this;};proto.size=function(){for(var i=0,c=this._next;c!==this;++i,c=c._next);return i;};proto.copy=function(){var l=this.emptyCopy();for(var c=this._next;c!==this;c=c._next)l.add(c._value);return l;};proto.toArray=function(){var a=[];for(var c=this._next;c!==this;c=c._next)a.push(c._value);return a;};proto.forEach=function(f){f=wrap_for_forEach(this,f);for(var c=this._next;c!==this;c=c._next){try{f(c._value);}catch(e){if(e instanceof EndOfLoopException){return;}else{throw e;}}}}
proto.fold=proto.foldl=function(f,s){f=wrap_for_fold(this,f,s);for(var c=this._next;c!==this;c=c._next){try{s=f(c._value);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.fold1=proto.foldl1=function(f){if(this.isEmpty())throw new EmptyEnumerationError();var s=this._next._value;f=wrap_for_fold(this,f,s);for(var c=this._next._next;c!==this;c=c._next){try{s=f(c._value);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.foldr=function(f,s){var g=wrap_for_fold(this,function(x,y){return f.call(this,y,x);},s);for(var c=this._prev;c!==this;c=c._prev){try{s=f(c._value);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.foldr1=function(f){if(this.isEmpty())throw new EmptyEnumerationError();var s=this._prev._value;var g=wrap_for_fold(this,function(x,y){return f.call(this,y,x);},s);for(var c=this._prev._prev;c!==this;c=c._prev){try{s=g(c._value);}catch(e){if(e instanceof EndOfLoopException){return e.result;}else{throw e;}}}
return s;};proto.map=function(f){var l=new LinkedList();f=wrap_for_map(this,f,function(){l.add.apply(l,arguments);});for(var c=this._next;c!==this;c=c._next){try{f(c._value);}catch(e){if(e instanceof EndOfLoopException)return l;else throw e;}}
return l;};function comp(top,l,r){if(l===r)return 0;do{l=l._next;if(l===r)return-1;}while(l!==top);return 1;}
function dist(top,l,r){for(var i=0,it=l;it!==top;i--,it=it._next){if(it===r)return i;}
for(var i=1,it=r._next;it!==top;i++,it=it._next){if(it===l)return i;}
return undefined;}
function Iterator(l,c){this._top=l;this._pos=c;}
var proto=Iterator.prototype=new List.Iterator();proto.constructor=Iterator;function validate(it){while(it._pos._removed){it._pos=it._pos._next;}}
proto.isBoundTo=function(that){return this._top===that;};proto.equals=function(that){if(!(that instanceof Iterator&&that.isBoundTo(this._top)))return false;validate(this);validate(that);return this._pos===that._pos;};proto.compareTo=function(that){if(!(that instanceof Iterator&&that.isBoundTo(this._top)))return undefined;validate(this);validate(that);return comp(this._top,this._pos,that._pos);};proto.distance=function(that){if(!(that instanceof Iterator&&that.isBoundTo(this._top)))return undefined;validate(this);validate(that);return dist(this._top,this._pos,that._pos);};proto.isHead=function(){validate(this);return this._pos===this._top._next;};proto.isTail=function(){validate(this);return this._pos===this._top;};proto.next=function(){if(this.isTail())throw new NoSuchElementError("no next element");return new Iterator(this._top,this._pos._next);};proto.previous=function(){if(this.isHead())throw new NoSuchElementError("no previous element");return new Iterator(this._top,this._pos._prev);};proto.value=function(){validate(this);return this._pos._value;};proto.assign=function(v){if(this.isTail())return this.insert(v);else return this._pos._value=v;};proto.insert=function(v){validate(this);var c=makeContainer(v);c._prev=this._pos._prev;c._next=this._pos;this._pos._prev=this._pos._prev._next=c;return v;};proto.remove=function(){if(this.isTail())throw new IllegalStateError("can't remove at the tail of list");this._pos._prev._next=this._pos._next;this._pos._next._prev=this._pos._prev;this._pos._removed=true;return this._pos._value;};function ReverseIterator(l,c){this._top=l;this._pos=c;}
var proto=ReverseIterator.prototype=new List.Iterator();for(var i in Iterator.prototype)proto[i]=Iterator.prototype[i];proto.constructor=ReverseIterator;function rvalidate(it){while(it._pos._removed){it._pos=it._pos._prev;}}
proto.isBoundTo=Iterator.prototype.isBoundTo;proto.equals=function(that){if(!(that instanceof Iterator&&that.isBoundTo(this._top)))return false;rvalidate(this);rvalidate(that);return this._pos===that._pos;};proto.compareTo=function(that){if(!(that instanceof Iterator&&that.isBoundTo(this._top)))return undefined;rvalidate(this);rvalidate(that);return-comp(this._top,this._pos,that._pos);};proto.distance=function(that){if(!(that instanceof Iterator&&that.isBoundTo(this._top)))return undefined;rvalidate(this);rvalidate(that);var d=dist(this._top,this._pos,that._pos);return isNaN(d)?d:-d;};proto.isHead=function(){rvalidate(this);return this._pos===this._top._prev;};proto.isTail=function(){rvalidate(this);return this._pos===this._top;};proto.next=function(){if(this.isTail())throw new NoSuchElementError("no next element");return new ReverseIterator(this._top,this._pos._prev);};proto.previous=function(){if(this.isHead())throw new NoSuchElementError("no previous element");return new ReverseIterator(this._top,this._pos._next);};proto.value=function(){rvalidate(this);return this._pos._value;};proto.assign=Iterator.prototype.assign;proto.insert=function(v){rvalidate(this);var c=makeContainer(v);c._next=this._pos._next;c._prev=this._pos;this._pos._next=this._pos._next._prev=c;return v;};proto.remove=Iterator.prototype.remove;return{LinkedList:LinkedList};}();}}}}}}}.call(null)){this.Data.LinkedList=LinkedList;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(this.Concurrent.Thread===undefined)this.Concurrent.Thread=undefined;with(function(){with(Data.Error){with(Concurrent){return function(){var VERSION='0.1.0';var NAMESPACE;NAMESPACE='Concurrent';var current_thread=null;function NoContinuationException(r){this.ret_val=r;}
function initial_continuation_procedure(ret_val){throw new NoContinuationException(ret_val);}
function NoExceptionHandlerException(e){this.thrown=e;}
function initial_exception_handler(e){throw new NoExceptionHandlerException(e);}
var initial_continuation={this_val:null,procedure:initial_continuation_procedure,exception:{this_val:null,procedure:initial_exception_handler}};initial_continuation.exception.exception=initial_continuation.exception;function Thread(){throw new Error("Thread cannot be instantiated directly.");}
function THREAD(t){this._triplet=t;this._is_ended=0;this._join_thread=null;this._joined_list=new Data.LinkedList();this._timerID=undefined;standBy.call(this,0);}
var proto=THREAD.prototype=Thread.prototype;+function(){var name="[object "+NAMESPACE+".Thread]"
proto.toString=function(){return name;};}();function cancel(){if(this._timerID){clearTimeout(this._timerID);this._timerID=undefined;}}
function standBy(t){cancel.call(this);var self=this;this._timerID=setTimeout(function(){doNext.call(self);},Number(t)||2);}
function unjoin(){if(this._join_thread){var self=this;var it=this._join_thread._joined_list.head().find(function(it){return it===self;});it.remove();this._join_thread=null;}}
Thread.TIME_SLICE=20;function doNext(){cancel.call(this);var triplet=this._triplet;this._triplet=null;try{current_thread=this;var limit=(new Date).valueOf()+Thread.TIME_SLICE;do{try{triplet=triplet.continuation.procedure.call(triplet.continuation.this_val,triplet.ret_val);}catch(e){if(e instanceof NoContinuationException){this._is_ended=1;this._result=e.ret_val;while(!this._joined_list.isEmpty()){var it=this._joined_list.head().value();unjoin.call(it);it._triplet.ret_val=e.ret_val;standBy.call(it);}
this._joined_list=null;return;}else if(e instanceof NoExceptionHandlerException){e=e.thrown;var joined_list=this._joined_list;this._joined_list=null;this._is_ended=-1;this._result=e;if(!joined_list.isEmpty()){while(!joined_list.isEmpty()){joined_list.head().value().notify(e);}}else if(!(e instanceof KillException)){throw e;}
return;}else{triplet.continuation=triplet.continuation.exception;triplet.ret_val=e;}}}while(triplet.timeout===undefined&&(new Date).valueOf()<limit);}finally{current_thread=null;}
this._triplet=triplet;if(triplet.timeout<0){}
else{standBy.call(this,triplet.timeout);}}
proto.notify=function(e){if(current_thread===this)throw e;if(this._is_ended)throw new NotAliveError();cancel.call(this);unjoin.call(this);this._triplet.continuation=this._triplet.continuation.exception;this._triplet.ret_val=e;standBy.call(this);return e;};proto.kill=function(s){return this.notify(arguments.length?new KillException(s):new KillException());};proto.join=function(){throw new Error("can't `join' in non-compiled functions");};proto.join.$Concurrent_Thread_compiled=function(this_val,args,cont){if(this_val._is_ended>0){return{continuation:cont,ret_val:this_val._result,timeout:undefined};}else if(this_val._is_ended<0){throw this_val._result;}else{this_val._joined_list.add(current_thread);current_thread._join_thread=this_val;return{continuation:cont,timeout:-1};}};Thread.create=function(f){if(typeof f!="function")throw new TypeError("can't create new thread from non-function value");if(typeof f.$Concurrent_Thread_compiled!=="function")f=this.compile(f);return f.async(null,Array.prototype.slice.call(arguments,1,arguments.length));};Thread.self=function(){return current_thread;};Thread.sleep=function(){throw new Error("can't `sleep' in non-compiled functions");};Thread.sleep.$Concurrent_Thread_compiled=function(this_val,args,cont){return{continuation:cont,ret_val:undefined,timeout:args[0]>0?args[0]:0};};Thread.stop=function(){throw new Error("can't `stop' in non-compiled functions");};Thread.stop.$Concurrent_Thread_compiled=function(this_val,args,cont){return{continuation:cont,ret_val:undefined,timeout:-1};};Thread.yield=function(){throw new Error("can't `yield' in non-compiled functions");};Thread.yield.$Concurrent_Thread_compiled=function(this_val,args,cont){return{continuation:cont,ret_val:undefined,timeout:0};};var KillException=Thread.KillException=Exception.extend(function($super,message){$super(message);},{name:NAMESPACE+".Thread.KillException",message:"thread killed"});var NotAliveError=Thread.NotAliveError=Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".Thread.NotAliveError",message:"thread not alive"});var proto=Function.prototype;proto.apply.$Concurrent_Thread_compiled=function(this_val,args,cont){if(typeof this_val.$Concurrent_Thread_compiled=="function"){return this_val.$Concurrent_Thread_compiled(args[0],args[1],cont);}else{return{continuation:cont,ret_val:this_val.apply(args[0],args[1])};}};proto.call.$Concurrent_Thread_compiled=function(this_val,args,cont){if(typeof this_val.$Concurrent_Thread_compiled=="function"){return this_val.$Concurrent_Thread_compiled(args[0],Array.prototype.slice.call(args,1,args.length),cont);}else{return{continuation:cont,ret_val:this_val.apply(args[0],Array.prototype.slice.call(args,1,args.length))};}};proto.async=function(this_val,args){if(typeof this.$Concurrent_Thread_compiled!="function")throw new Error("this is not a compiled function");if(args===void 0)args=[];return new THREAD(this.$Concurrent_Thread_compiled(this_val,args,initial_continuation));};return{Thread:Thread};}();}}}.call(null)){this.Concurrent.Thread=Thread;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(!this.Data.Cons.Util||(typeof this.Data.Cons.Util!='object'&&typeof this.Data.Cons.Util!='function'))this.Data.Cons.Util=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Data.Cons.Util.last===undefined)this.Data.Cons.Util.last=undefined;if(this.Data.Cons.Util.adder===undefined)this.Data.Cons.Util.adder=undefined;if(this.Data.Cons.Util.concat===undefined)this.Data.Cons.Util.concat=undefined;with(function(){with(Data.Error){with(Data.Cons){with(Data.Cons.Util){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Data.Cons.Util';function last(c){if(!(c instanceof Cell))throw new TypeError("argument is not cons-list");if(c.isNil())return c;if(!(c.cdr instanceof Cell))throw new TypeError("argument is not cons-list");while(!c.cdr.isNil()){c=c.cdr;if(!(c.cdr instanceof Cell))throw new TypeError("argument is not cons-list");}
return c;}
function adder(c){c=last(c);if(c.isNil())throw new IllegalStateError("can't append to nil");return function(){c=last(c);for(var i=0;i<arguments.length;i++){c=c.cdr=new Cell(arguments[i],c.cdr);}};}
function concat(){if(arguments.length==0)return nil();var head=arguments[0];var cell=last(head);for(var i=1;i<arguments.length;i++){cell.cdr=arguments[i];cell=last(cell);}
return head;}
return{adder:adder,concat:concat,last:last};}();}}}}.call(null)){this.Data.Cons.Util.adder=adder;this.Data.Cons.Util.concat=concat;this.Data.Cons.Util.last=last;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Concurrent.Thread.Compiler.Kit||(typeof this.Concurrent.Thread.Compiler.Kit!='object'&&typeof this.Concurrent.Thread.Compiler.Kit!='function'))this.Concurrent.Thread.Compiler.Kit=new Object();if(this.Concurrent.Thread.Compiler.Kit.printTrees===undefined)this.Concurrent.Thread.Compiler.Kit.printTrees=undefined;if(this.Concurrent.Thread.Compiler.Kit.codeBug===undefined)this.Concurrent.Thread.Compiler.Kit.codeBug=undefined;with(function(){with(Concurrent.Thread.Compiler.Kit){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler.Kit';var printTrees=false;function codeBug(){var str="";for(var i=0;i<arguments.length;i++)str+=arguments[i];var e=new Data.Error.IllegalStateError("FAILED ASSERTION: "+str);var s=e.toString();if(e.stack)s+="\n----------\n"+e.stack;alert(s);throw e;}
return{printTrees:printTrees,codeBug:codeBug};}();}}.call(null)){this.Concurrent.Thread.Compiler.Kit.printTrees=printTrees;this.Concurrent.Thread.Compiler.Kit.codeBug=codeBug;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Iterator||(typeof this.Data.Iterator!='object'&&typeof this.Data.Iterator!='function'))this.Data.Iterator=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(this.Concurrent.Thread.Compiler.IdentifierSet===undefined)this.Concurrent.Thread.Compiler.IdentifierSet=undefined;with(function(){with(Data.Error){with(Data.Iterator){with(Data.Functional){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var MIN_INT=Math.pow(-2,53);function IdentifierSet(){this._set={};this._state_no=MIN_INT;}
var proto=IdentifierSet.prototype=new Set();proto.constructor=IdentifierSet;var hasOwnProperty=Object.prototype.hasOwnProperty;proto.contains=function(){for(var i=0;i<arguments.length;i++){var id=arguments[i];if(!(id instanceof Identifier))throw new TypeError("arguments["+i+"] is not of type Identifier");if(!hasOwnProperty.call(this._set,id.valueOf()))return false;}
return true;};proto.add=function(){var changed=false;for(var i=0;i<arguments.length;i++){var id=arguments[i];if(!(id instanceof Identifier))throw new TypeError("arguments["+i+"] is not of type Identifier");var p=id.valueOf();if(this._set[p]!==id){this._set[p]=id;this._state_no++;changed=true;}}
return changed;};proto.remove=function(){var changed=false;for(var i=0;i<arguments.length;i++){var id=arguments[i];if(!(id instanceof Identifier))throw new TypeError("argument is not of type Identifier");var p=id.valueOf();if(hasOwnProperty.call(this._set,p)){delete this._set[p];this._state_no++;changed=true;}}
return changed;};proto.toArray=function(){var arr=[];for(var i in this._set){if(hasOwnProperty.call(this._set,i))arr.push(this._set[i]);}
return arr;};proto.iterator=function(){return new IdIterator(this,this.toArray(),0);};function IdIterator(parent,elems,index){this._parent=parent;this._elems=elems;this._index=index;this._state_no=parent._state_no;}
var proto=IdIterator.prototype=new Iterator();proto.constructor=IdIterator;proto.isBoundTo=function(o){return this._parent===o;};proto.isTail=function(){if(this._state_no!==this._parent._state_no)throw new IllegalStateError("parent IdentifierSet object's state has been changed");return this._index>=this._elems.length;};proto.next=function(){if(this._state_no!==this._parent._state_no)throw new IllegalStateError("parent IdentifierSet object's state has been changed");if(this.isTail())throw new NoSuchElementError("no more element after the tail");return new IdIterator(this._parent,this._elems,this._index+1);};proto.value=function(){if(this._state_no!==this._parent._state_no)throw new IllegalStateError("parent IdentifierSet object's state has been changed");return this._elems[this._index];};return{IdentifierSet:IdentifierSet};}();}}}}}.call(null)){this.Concurrent.Thread.Compiler.IdentifierSet=IdentifierSet;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Continuation||(typeof this.Concurrent.Thread.Continuation!='object'&&typeof this.Concurrent.Thread.Continuation!='function'))this.Concurrent.Thread.Continuation=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(this.Concurrent.Thread.Continuation.callcc===undefined)this.Concurrent.Thread.Continuation.callcc=undefined;if(this.Concurrent.Thread.Continuation.getCC===undefined)this.Concurrent.Thread.Continuation.getCC=undefined;if(this.Concurrent.Thread.Continuation.currentContinuation===undefined)this.Concurrent.Thread.Continuation.currentContinuation=undefined;if(this.Concurrent.Thread.Continuation.ContinuationCalledException===undefined)this.Concurrent.Thread.Continuation.ContinuationCalledException=undefined;with(function(){with(Data.Error){with(Concurrent.Thread.Continuation){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Continuation';function callcc(){throw new Error("can't call `"+NAMESPACE+".callcc' in non-threaded functions");}
callcc.$Concurrent_Thread_compiled=function($this,$args,$cont){function continuation(){throw new Error("can't call any captured continuation in non-threaded functions");}
continuation.$Concurrent_Thread_compiled=function($this,$args,_){return{continuation:$cont,timeout:void 0,ret_val:$args[0]};};var f=$args[0];return f&&typeof f.$Concurrent_Thread_compiled==="function"?f.$Concurrent_Thread_compiled(null,[continuation],$cont):{continuation:$cont,ret_val:f(continuation),timeout:void 0};};function getCC(){throw new Error("can't call `"+NAMESPACE+".getCC' in non-threaded functions");}
getCC.$Concurrent_Thread_compiled=function($this,$args,$cont){function continuation(){throw new Error("can't call any captured continuation in non-threaded functions");}
continuation.$Concurrent_Thread_compiled=function($this,$args,_){return{continuation:$cont,timeout:void 0,ret_val:$args[0]};};return{continuation:$cont,ret_val:continuation,timeout:void 0};};function currentContinuation(){throw new Error("can't call `"+NAMESPACE+".currentContinuation' in non-threaded functions");}
currentContinuation.$Concurrent_Thread_compiled=function($this,$args,$cont){function continuation(){throw new Error("can't call any captured continuation in non-threaded functions");}
continuation.$Concurrent_Thread_compiled=function($this,$args,_){return{continuation:$cont.exception,timeout:void 0,ret_val:new ContinuationCalledException($args)};};return{continuation:$cont,timeout:void 0,ret_val:continuation};};var ContinuationCalledException=Exception.extend(function($super,args){$super("continuation called");this.args=args;},{name:NAMESPACE+".ContinuationCalledException"});return{ContinuationCalledException:ContinuationCalledException,callcc:callcc,getCC:getCC,currentContinuation:currentContinuation};}();}}}.call(null)){this.Concurrent.Thread.Continuation.ContinuationCalledException=ContinuationCalledException;this.Concurrent.Thread.Continuation.callcc=callcc;this.Concurrent.Thread.Continuation.getCC=getCC;this.Concurrent.Thread.Continuation.currentContinuation=currentContinuation;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(this.Concurrent.Thread.Compiler.ErrorReporter===undefined)this.Concurrent.Thread.Compiler.ErrorReporter=undefined;with(function(){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';function ErrorReporter(){}
var proto=ErrorReporter.prototype;proto.warning=function(message,line,lineSource,lineOffset){};proto.error=function(message,line,lineSource,lineOffset){};return{ErrorReporter:ErrorReporter};}();}}.call(null)){this.Concurrent.Thread.Compiler.ErrorReporter=ErrorReporter;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(this.Concurrent.Thread.Compiler.isAlpha===undefined)this.Concurrent.Thread.Compiler.isAlpha=undefined;if(this.Concurrent.Thread.Compiler.isDigit===undefined)this.Concurrent.Thread.Compiler.isDigit=undefined;if(this.Concurrent.Thread.Compiler.isHexDigit===undefined)this.Concurrent.Thread.Compiler.isHexDigit=undefined;if(this.Concurrent.Thread.Compiler.isLineTerminator===undefined)this.Concurrent.Thread.Compiler.isLineTerminator=undefined;if(this.Concurrent.Thread.Compiler.isSpace===undefined)this.Concurrent.Thread.Compiler.isSpace=undefined;if(this.Concurrent.Thread.Compiler.isFormatChar===undefined)this.Concurrent.Thread.Compiler.isFormatChar=undefined;if(this.Concurrent.Thread.Compiler.isIdentifierStart===undefined)this.Concurrent.Thread.Compiler.isIdentifierStart=undefined;if(this.Concurrent.Thread.Compiler.isIdentifierPart===undefined)this.Concurrent.Thread.Compiler.isIdentifierPart=undefined;with(function(){with(Concurrent.Thread.Compiler){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';function isAlpha(c)
{c=c.charCodeAt(0);return c<=0x5A?0x41<=c:0x61<=c&&c<=0x7A;}
function isDigit(c)
{c=c.charCodeAt(0);return 0x30<=c&&c<=0x39;}
function isHexDigit(c)
{c=c.charCodeAt(0);return c<=0x46?c<=0x39?0x30<=c:0x41<=c:0x61<=c&&c<=0x66;}
function isLineTerminator(c){switch(c.charCodeAt(0)){case 0x000A:case 0x000D:case 0x2028:case 0x2029:return true;default:return false;}}
function isSpace(c)
{c=c.charCodeAt(0);if(c<=255){switch(c){case 0x0009:case 0x000B:case 0x000C:case 0x0020:case 0x00A0:return true;default:return false;}}
else{return c<=0x180E?c<=0xA0?c<=0x20?0x20<=c:0xA0<=c:c<=0x1680?0x1680<=c:0x180E<=c:c<=0x202F?c<=0x200A?0x2000<=c:0x202F<=c:c<=0x205F?0x205F<=c:c===0x3000;}}
function isFormatChar(c)
{c=c.charCodeAt(0);if(c<=127)return false;return c<=0x202E?c<=0x70F?c<=0x603?c<=0xAD?0xAD<=c:0x600<=c:c<=0x6DD?0x6DD<=c:0x70F<=c:c<=0x200F?c<=0x17B5?0x17B4<=c:0x200B<=c:0x202A<=c:c<=0xFFFB?c<=0x206F?c<=0x2063?0x2060<=c:0x206A<=c:c<=0xFEFF?0xFEFF<=c:0xFFF9<=c:c<=0xE0001?c<=0x1D17A?0x1D173<=c:0xE0001<=c:0xE0020<=c&&c<=0xE007F;}
function isIdentifierStart(c){var c=c.charCodeAt(0);switch(c){case 0x24:case 0x5F:return true;}
return c<=0x1731?c<=0xB95?c<=0x961?c<=0x587?c<=0x37D?c<=0xD6?c<=0xAA?c<=0x7A?c<=0x5A?0x41<=c:0x61<=c:0xAA<=c:c<=0xBA?c<=0xB5?0xB5<=c:0xBA<=c:0xC0<=c:c<=0x2D1?c<=0x2C1?c<=0xF6?0xD8<=c:0xF8<=c:0x2C6<=c:c<=0x2EE?c<=0x2E4?0x2E0<=c:0x2EE<=c:0x37A<=c:c<=0x3F5?c<=0x38C?c<=0x38A?c<=0x386?0x386<=c:0x388<=c:0x38C<=c:c<=0x3CE?c<=0x3A1?0x38E<=c:0x3A3<=c:0x3D0<=c:c<=0x556?c<=0x513?c<=0x481?0x3F7<=c:0x48A<=c:0x531<=c:c<=0x559?0x559<=c:0x561<=c:c<=0x710?c<=0x6D3?c<=0x63A?c<=0x5F2?c<=0x5EA?0x5D0<=c:0x5F0<=c:0x621<=c:c<=0x66F?c<=0x64A?0x640<=c:0x66E<=c:0x671<=c:c<=0x6EF?c<=0x6E6?c<=0x6D5?0x6D5<=c:0x6E5<=c:0x6EE<=c:c<=0x6FF?c<=0x6FC?0x6FA<=c:0x6FF<=c:0x710<=c:c<=0x7F5?c<=0x7A5?c<=0x76D?c<=0x72F?0x712<=c:0x74D<=c:0x780<=c:c<=0x7EA?c<=0x7B1?0x7B1<=c:0x7CA<=c:0x7F4<=c:c<=0x93D?c<=0x939?c<=0x7FA?0x7FA<=c:0x904<=c:0x93D<=c:c<=0x950?0x950<=c:0x958<=c:c<=0xA8D?c<=0x9F1?c<=0x9B2?c<=0x990?c<=0x98C?c<=0x97F?0x97B<=c:0x985<=c:0x98F<=c:c<=0x9B0?c<=0x9A8?0x993<=c:0x9AA<=c:0x9B2<=c:c<=0x9CE?c<=0x9BD?c<=0x9B9?0x9B6<=c:0x9BD<=c:0x9CE<=c:c<=0x9E1?c<=0x9DD?0x9DC<=c:0x9DF<=c:0x9F0<=c:c<=0xA36?c<=0xA28?c<=0xA10?c<=0xA0A?0xA05<=c:0xA0F<=c:0xA13<=c:c<=0xA33?c<=0xA30?0xA2A<=c:0xA32<=c:0xA35<=c:c<=0xA5E?c<=0xA5C?c<=0xA39?0xA38<=c:0xA59<=c:0xA5E<=c:c<=0xA74?0xA72<=c:0xA85<=c:c<=0xB28?c<=0xABD?c<=0xAB0?c<=0xAA8?c<=0xA91?0xA8F<=c:0xA93<=c:0xAAA<=c:c<=0xAB9?c<=0xAB3?0xAB2<=c:0xAB5<=c:0xABD<=c:c<=0xB0C?c<=0xAE1?c<=0xAD0?0xAD0<=c:0xAE0<=c:0xB05<=c:c<=0xB10?0xB0F<=c:0xB13<=c:c<=0xB61?c<=0xB39?c<=0xB33?c<=0xB30?0xB2A<=c:0xB32<=c:0xB35<=c:c<=0xB5D?c<=0xB3D?0xB3D<=c:0xB5C<=c:0xB5F<=c:c<=0xB8A?c<=0xB83?c<=0xB71?0xB71<=c:0xB83<=c:0xB85<=c:c<=0xB90?0xB8E<=c:0xB92<=c:c<=0xEB0?c<=0xD28?c<=0xC61?c<=0xBB9?c<=0xB9F?c<=0xB9C?c<=0xB9A?0xB99<=c:0xB9C<=c:0xB9E<=c:c<=0xBAA?c<=0xBA4?0xBA3<=c:0xBA8<=c:0xBAE<=c:c<=0xC28?c<=0xC10?c<=0xC0C?0xC05<=c:0xC0E<=c:0xC12<=c:c<=0xC39?c<=0xC33?0xC2A<=c:0xC35<=c:0xC60<=c:c<=0xCBD?c<=0xCA8?c<=0xC90?c<=0xC8C?0xC85<=c:0xC8E<=c:0xC92<=c:c<=0xCB9?c<=0xCB3?0xCAA<=c:0xCB5<=c:0xCBD<=c:c<=0xD0C?c<=0xCE1?c<=0xCDE?0xCDE<=c:0xCE0<=c:0xD05<=c:c<=0xD10?0xD0E<=c:0xD12<=c:c<=0xE82?c<=0xDBD?c<=0xD96?c<=0xD61?c<=0xD39?0xD2A<=c:0xD60<=c:0xD85<=c:c<=0xDBB?c<=0xDB1?0xD9A<=c:0xDB3<=c:0xDBD<=c:c<=0xE33?c<=0xE30?c<=0xDC6?0xDC0<=c:0xE01<=c:0xE32<=c:c<=0xE46?0xE40<=c:0xE81<=c:c<=0xE9F?c<=0xE8A?c<=0xE88?c<=0xE84?0xE84<=c:0xE87<=c:0xE8A<=c:c<=0xE97?c<=0xE8D?0xE8D<=c:0xE94<=c:0xE99<=c:c<=0xEA7?c<=0xEA5?c<=0xEA3?0xEA1<=c:0xEA5<=c:0xEA7<=c:c<=0xEAB?0xEAA<=c:0xEAD<=c:c<=0x1258?c<=0x102A?c<=0xF00?c<=0xEC4?c<=0xEBD?c<=0xEB3?0xEB2<=c:0xEBD<=c:0xEC0<=c:c<=0xEDD?c<=0xEC6?0xEC6<=c:0xEDC<=c:0xF00<=c:c<=0xF8B?c<=0xF6A?c<=0xF47?0xF40<=c:0xF49<=c:0xF88<=c:c<=0x1027?c<=0x1021?0x1000<=c:0x1023<=c:0x1029<=c:c<=0x11A2?c<=0x10FA?c<=0x10C5?c<=0x1055?0x1050<=c:0x10A0<=c:0x10D0<=c:c<=0x1159?c<=0x10FC?0x10FC<=c:0x1100<=c:0x115F<=c:c<=0x124D?c<=0x1248?c<=0x11F9?0x11A8<=c:0x1200<=c:0x124A<=c:c<=0x1256?0x1250<=c:0x1258<=c:c<=0x1315?c<=0x12BE?c<=0x128D?c<=0x1288?c<=0x125D?0x125A<=c:0x1260<=c:0x128A<=c:c<=0x12B5?c<=0x12B0?0x1290<=c:0x12B2<=c:0x12B8<=c:c<=0x12D6?c<=0x12C5?c<=0x12C0?0x12C0<=c:0x12C2<=c:0x12C8<=c:c<=0x1310?0x12D8<=c:0x1312<=c:c<=0x169A?c<=0x13F4?c<=0x138F?c<=0x135A?0x1318<=c:0x1380<=c:0x13A0<=c:c<=0x1676?c<=0x166C?0x1401<=c:0x166F<=c:0x1681<=c:c<=0x170C?c<=0x16F0?c<=0x16EA?0x16A0<=c:0x16EE<=c:0x1700<=c:c<=0x1711?0x170E<=c:0x1720<=c:c<=0xA805?c<=0x2115?c<=0x1F4D?c<=0x19A9?c<=0x17DC?c<=0x1770?c<=0x176C?c<=0x1751?0x1740<=c:0x1760<=c:0x176E<=c:c<=0x17D7?c<=0x17B3?0x1780<=c:0x17D7<=c:0x17DC<=c:c<=0x191C?c<=0x18A8?c<=0x1877?0x1820<=c:0x1880<=c:0x1900<=c:c<=0x1974?c<=0x196D?0x1950<=c:0x1970<=c:0x1980<=c:c<=0x1E9B?c<=0x1B33?c<=0x1A16?c<=0x19C7?0x19C1<=c:0x1A00<=c:0x1B05<=c:c<=0x1DBF?c<=0x1B4B?0x1B45<=c:0x1D00<=c:0x1E00<=c:c<=0x1F1D?c<=0x1F15?c<=0x1EF9?0x1EA0<=c:0x1F00<=c:0x1F18<=c:c<=0x1F45?0x1F20<=c:0x1F48<=c:c<=0x1FD3?c<=0x1FB4?c<=0x1F5B?c<=0x1F59?c<=0x1F57?0x1F50<=c:0x1F59<=c:0x1F5B<=c:c<=0x1F7D?c<=0x1F5D?0x1F5D<=c:0x1F5F<=c:0x1F80<=c:c<=0x1FC4?c<=0x1FBE?c<=0x1FBC?0x1FB6<=c:0x1FBE<=c:0x1FC2<=c:c<=0x1FCC?0x1FC6<=c:0x1FD0<=c:c<=0x207F?c<=0x1FF4?c<=0x1FEC?c<=0x1FDB?0x1FD6<=c:0x1FE0<=c:0x1FF2<=c:c<=0x2071?c<=0x1FFC?0x1FF6<=c:0x2071<=c:0x207F<=c:c<=0x2107?c<=0x2102?c<=0x2094?0x2090<=c:0x2102<=c:0x2107<=c:c<=0x2113?0x210A<=c:0x2115<=c:c<=0x2DBE?c<=0x2C5E?c<=0x2139?c<=0x2126?c<=0x2124?c<=0x211D?0x2119<=c:0x2124<=c:0x2126<=c:c<=0x212D?c<=0x2128?0x2128<=c:0x212A<=c:0x212F<=c:c<=0x214E?c<=0x2149?c<=0x213F?0x213C<=c:0x2145<=c:0x214E<=c:c<=0x2C2E?c<=0x2184?0x2160<=c:0x2C00<=c:0x2C30<=c:c<=0x2D6F?c<=0x2CE4?c<=0x2C77?c<=0x2C6C?0x2C60<=c:0x2C74<=c:0x2C80<=c:c<=0x2D65?c<=0x2D25?0x2D00<=c:0x2D30<=c:0x2D6F<=c:c<=0x2DAE?c<=0x2DA6?c<=0x2D96?0x2D80<=c:0x2DA0<=c:0x2DA8<=c:c<=0x2DB6?0x2DB0<=c:0x2DB8<=c:c<=0x30FA?c<=0x3029?c<=0x2DD6?c<=0x2DCE?c<=0x2DC6?0x2DC0<=c:0x2DC8<=c:0x2DD0<=c:c<=0x3007?c<=0x2DDE?0x2DD8<=c:0x3005<=c:0x3021<=c:c<=0x3096?c<=0x303C?c<=0x3035?0x3031<=c:0x3038<=c:0x3041<=c:c<=0x309F?0x309D<=c:0x30A1<=c:c<=0x4DB5?c<=0x318E?c<=0x312C?c<=0x30FF?0x30FC<=c:0x3105<=c:0x3131<=c:c<=0x31FF?c<=0x31B7?0x31A0<=c:0x31F0<=c:0x3400<=c:c<=0xA71A?c<=0xA48C?c<=0x9FBB?0x4E00<=c:0xA000<=c:0xA717<=c:c<=0xA801?0xA800<=c:0xA803<=c:c<=0x1049D?c<=0xFEFC?c<=0xFB36?c<=0xFA6A?c<=0xA873?c<=0xA822?c<=0xA80A?0xA807<=c:0xA80C<=c:0xA840<=c:c<=0xFA2D?c<=0xD7A3?0xAC00<=c:0xF900<=c:0xFA30<=c:c<=0xFB17?c<=0xFB06?c<=0xFAD9?0xFA70<=c:0xFB00<=c:0xFB13<=c:c<=0xFB28?c<=0xFB1D?0xFB1D<=c:0xFB1F<=c:0xFB2A<=c:c<=0xFD3D?c<=0xFB41?c<=0xFB3E?c<=0xFB3C?0xFB38<=c:0xFB3E<=c:0xFB40<=c:c<=0xFBB1?c<=0xFB44?0xFB43<=c:0xFB46<=c:0xFBD3<=c:c<=0xFDFB?c<=0xFDC7?c<=0xFD8F?0xFD50<=c:0xFD92<=c:0xFDF0<=c:c<=0xFE74?0xFE70<=c:0xFE76<=c:c<=0x1003D?c<=0xFFD7?c<=0xFFBE?c<=0xFF5A?c<=0xFF3A?0xFF21<=c:0xFF41<=c:0xFF66<=c:c<=0xFFCF?c<=0xFFC7?0xFFC2<=c:0xFFCA<=c:0xFFD2<=c:c<=0x10026?c<=0x1000B?c<=0xFFDC?0xFFDA<=c:0x10000<=c:0x1000D<=c:c<=0x1003A?0x10028<=c:0x1003C<=c:c<=0x1034A?c<=0x100FA?c<=0x1005D?c<=0x1004D?0x1003F<=c:0x10050<=c:0x10080<=c:c<=0x1031E?c<=0x10174?0x10140<=c:0x10300<=c:0x10330<=c:c<=0x103CF?c<=0x103C3?c<=0x1039D?0x10380<=c:0x103A0<=c:0x103C8<=c:c<=0x103D5?0x103D1<=c:0x10400<=c:c<=0x1D505?c<=0x1236E?c<=0x1083F?c<=0x10835?c<=0x10808?c<=0x10805?0x10800<=c:0x10808<=c:0x1080A<=c:c<=0x1083C?c<=0x10838?0x10837<=c:0x1083C<=c:0x1083F<=c:c<=0x10A13?c<=0x10A00?c<=0x10915?0x10900<=c:0x10A00<=c:0x10A10<=c:c<=0x10A33?c<=0x10A17?0x10A15<=c:0x10A19<=c:0x12000<=c:c<=0x1D4A6?c<=0x1D49C?c<=0x1D454?c<=0x12462?0x12400<=c:0x1D400<=c:0x1D456<=c:c<=0x1D4A2?c<=0x1D49F?0x1D49E<=c:0x1D4A2<=c:0x1D4A5<=c:c<=0x1D4BB?c<=0x1D4B9?c<=0x1D4AC?0x1D4A9<=c:0x1D4AE<=c:0x1D4BB<=c:c<=0x1D4C3?0x1D4BD<=c:0x1D4C5<=c:c<=0x1D6DA?c<=0x1D544?c<=0x1D51C?c<=0x1D514?c<=0x1D50A?0x1D507<=c:0x1D50D<=c:0x1D516<=c:c<=0x1D53E?c<=0x1D539?0x1D51E<=c:0x1D53B<=c:0x1D540<=c:c<=0x1D6A5?c<=0x1D550?c<=0x1D546?0x1D546<=c:0x1D54A<=c:0x1D552<=c:c<=0x1D6C0?0x1D6A8<=c:0x1D6C2<=c:c<=0x1D788?c<=0x1D734?c<=0x1D714?c<=0x1D6FA?0x1D6DC<=c:0x1D6FC<=c:0x1D716<=c:c<=0x1D76E?c<=0x1D74E?0x1D736<=c:0x1D750<=c:0x1D770<=c:c<=0x1D7CB?c<=0x1D7C2?c<=0x1D7A8?0x1D78A<=c:0x1D7AA<=c:0x1D7C4<=c:c<=0x2A6D6?0x20000<=c:0x2F800<=c&&c<=0x2FA1D;}
function isIdentifierPart(c){var c=c.charCodeAt(0);switch(c){case 0x24:case 0x5F:return true;}
return c<=0x12B0?c<=0xB90?c<=0x990?c<=0x5BF?c<=0x37D?c<=0xD6?c<=0x7A?c<=0x5A?c<=0x39?0x30<=c:0x41<=c:c<=0x5F?0x5F<=c:0x61<=c:c<=0xB5?c<=0xAA?0xAA<=c:0xB5<=c:c<=0xBA?0xBA<=c:0xC0<=c:c<=0x2E4?c<=0x2C1?c<=0xF6?0xD8<=c:0xF8<=c:c<=0x2D1?0x2C6<=c:0x2E0<=c:c<=0x36F?c<=0x2EE?0x2EE<=c:0x300<=c:0x37A<=c:c<=0x481?c<=0x3A1?c<=0x38A?c<=0x386?0x386<=c:0x388<=c:c<=0x38C?0x38C<=c:0x38E<=c:c<=0x3F5?c<=0x3CE?0x3A3<=c:0x3D0<=c:0x3F7<=c:c<=0x559?c<=0x513?c<=0x486?0x483<=c:0x48A<=c:c<=0x556?0x531<=c:0x559<=c:c<=0x5BD?c<=0x587?0x561<=c:0x591<=c:0x5BF<=c:c<=0x6FF?c<=0x63A?c<=0x5EA?c<=0x5C5?c<=0x5C2?0x5C1<=c:0x5C4<=c:c<=0x5C7?0x5C7<=c:0x5D0<=c:c<=0x615?c<=0x5F2?0x5F0<=c:0x610<=c:0x621<=c:c<=0x6DC?c<=0x669?c<=0x65E?0x640<=c:0x660<=c:c<=0x6D3?0x66E<=c:0x6D5<=c:c<=0x6FC?c<=0x6E8?0x6DF<=c:0x6EA<=c:0x6FF<=c:c<=0x94D?c<=0x7F5?c<=0x76D?c<=0x74A?0x710<=c:0x74D<=c:c<=0x7B1?0x780<=c:0x7C0<=c:c<=0x939?c<=0x7FA?0x7FA<=c:0x901<=c:0x93C<=c:c<=0x97F?c<=0x963?c<=0x954?0x950<=c:0x958<=c:c<=0x96F?0x966<=c:0x97B<=c:c<=0x98C?c<=0x983?0x981<=c:0x985<=c:0x98F<=c:c<=0xA91?c<=0xA28?c<=0x9D7?c<=0x9B9?c<=0x9B0?c<=0x9A8?0x993<=c:0x9AA<=c:c<=0x9B2?0x9B2<=c:0x9B6<=c:c<=0x9C8?c<=0x9C4?0x9BC<=c:0x9C7<=c:c<=0x9CE?0x9CB<=c:0x9D7<=c:c<=0xA03?c<=0x9E3?c<=0x9DD?0x9DC<=c:0x9DF<=c:c<=0x9F1?0x9E6<=c:0xA01<=c:c<=0xA10?c<=0xA0A?0xA05<=c:0xA0F<=c:0xA13<=c:c<=0xA48?c<=0xA39?c<=0xA33?c<=0xA30?0xA2A<=c:0xA32<=c:c<=0xA36?0xA35<=c:0xA38<=c:c<=0xA42?c<=0xA3C?0xA3C<=c:0xA3E<=c:0xA47<=c:c<=0xA74?c<=0xA5C?c<=0xA4D?0xA4B<=c:0xA59<=c:c<=0xA5E?0xA5E<=c:0xA66<=c:c<=0xA8D?c<=0xA83?0xA81<=c:0xA85<=c:0xA8F<=c:c<=0xB28?c<=0xACD?c<=0xAB9?c<=0xAB0?c<=0xAA8?0xA93<=c:0xAAA<=c:c<=0xAB3?0xAB2<=c:0xAB5<=c:c<=0xAC9?c<=0xAC5?0xABC<=c:0xAC7<=c:0xACB<=c:c<=0xB03?c<=0xAE3?c<=0xAD0?0xAD0<=c:0xAE0<=c:c<=0xAEF?0xAE6<=c:0xB01<=c:c<=0xB10?c<=0xB0C?0xB05<=c:0xB0F<=c:0xB13<=c:c<=0xB57?c<=0xB43?c<=0xB33?c<=0xB30?0xB2A<=c:0xB32<=c:c<=0xB39?0xB35<=c:0xB3C<=c:c<=0xB4D?c<=0xB48?0xB47<=c:0xB4B<=c:0xB56<=c:c<=0xB71?c<=0xB61?c<=0xB5D?0xB5C<=c:0xB5F<=c:c<=0xB6F?0xB66<=c:0xB71<=c:c<=0xB8A?c<=0xB83?0xB82<=c:0xB85<=c:0xB8E<=c:c<=0xDD6?c<=0xCB3?c<=0xC10?c<=0xBC2?c<=0xB9F?c<=0xB9A?c<=0xB95?0xB92<=c:0xB99<=c:c<=0xB9C?0xB9C<=c:0xB9E<=c:c<=0xBAA?c<=0xBA4?0xBA3<=c:0xBA8<=c:c<=0xBB9?0xBAE<=c:0xBBE<=c:c<=0xBEF?c<=0xBCD?c<=0xBC8?0xBC6<=c:0xBCA<=c:c<=0xBD7?0xBD7<=c:0xBE6<=c:c<=0xC0C?c<=0xC03?0xC01<=c:0xC05<=c:0xC0E<=c:c<=0xC56?c<=0xC44?c<=0xC33?c<=0xC28?0xC12<=c:0xC2A<=c:c<=0xC39?0xC35<=c:0xC3E<=c:c<=0xC4D?c<=0xC48?0xC46<=c:0xC4A<=c:0xC55<=c:c<=0xC8C?c<=0xC6F?c<=0xC61?0xC60<=c:0xC66<=c:c<=0xC83?0xC82<=c:0xC85<=c:c<=0xCA8?c<=0xC90?0xC8E<=c:0xC92<=c:0xCAA<=c:c<=0xD43?c<=0xCE3?c<=0xCCD?c<=0xCC4?c<=0xCB9?0xCB5<=c:0xCBC<=c:c<=0xCC8?0xCC6<=c:0xCCA<=c:c<=0xCDE?c<=0xCD6?0xCD5<=c:0xCDE<=c:0xCE0<=c:c<=0xD10?c<=0xD03?c<=0xCEF?0xCE6<=c:0xD02<=c:c<=0xD0C?0xD05<=c:0xD0E<=c:c<=0xD39?c<=0xD28?0xD12<=c:0xD2A<=c:0xD3E<=c:c<=0xD96?c<=0xD61?c<=0xD4D?c<=0xD48?0xD46<=c:0xD4A<=c:c<=0xD57?0xD57<=c:0xD60<=c:c<=0xD83?c<=0xD6F?0xD66<=c:0xD82<=c:0xD85<=c:c<=0xDC6?c<=0xDBB?c<=0xDB1?0xD9A<=c:0xDB3<=c:c<=0xDBD?0xDBD<=c:0xDC0<=c:c<=0xDD4?c<=0xDCA?0xDCA<=c:0xDCF<=c:0xDD6<=c:c<=0xF39?c<=0xEA7?c<=0xE88?c<=0xE4E?c<=0xDF3?c<=0xDDF?0xDD8<=c:0xDF2<=c:c<=0xE3A?0xE01<=c:0xE40<=c:c<=0xE82?c<=0xE59?0xE50<=c:0xE81<=c:c<=0xE84?0xE84<=c:0xE87<=c:c<=0xE9F?c<=0xE8D?c<=0xE8A?0xE8A<=c:0xE8D<=c:c<=0xE97?0xE94<=c:0xE99<=c:c<=0xEA5?c<=0xEA3?0xEA1<=c:0xEA5<=c:0xEA7<=c:c<=0xED9?c<=0xEC4?c<=0xEB9?c<=0xEAB?0xEAA<=c:0xEAD<=c:c<=0xEBD?0xEBB<=c:0xEC0<=c:c<=0xECD?c<=0xEC6?0xEC6<=c:0xEC8<=c:0xED0<=c:c<=0xF29?c<=0xF00?c<=0xEDD?0xEDC<=c:0xF00<=c:c<=0xF19?0xF18<=c:0xF20<=c:c<=0xF37?c<=0xF35?0xF35<=c:0xF37<=c:0xF39<=c:c<=0x1059?c<=0xFC6?c<=0xF8B?c<=0xF6A?c<=0xF47?0xF3E<=c:0xF49<=c:c<=0xF84?0xF71<=c:0xF86<=c:c<=0xFBC?c<=0xF97?0xF90<=c:0xF99<=c:0xFC6<=c:c<=0x1032?c<=0x1027?c<=0x1021?0x1000<=c:0x1023<=c:c<=0x102A?0x1029<=c:0x102C<=c:c<=0x1049?c<=0x1039?0x1036<=c:0x1040<=c:0x1050<=c:c<=0x1248?c<=0x1159?c<=0x10FA?c<=0x10C5?0x10A0<=c:0x10D0<=c:c<=0x10FC?0x10FC<=c:0x1100<=c:c<=0x11F9?c<=0x11A2?0x115F<=c:0x11A8<=c:0x1200<=c:c<=0x125D?c<=0x1256?c<=0x124D?0x124A<=c:0x1250<=c:c<=0x1258?0x1258<=c:0x125A<=c:c<=0x128D?c<=0x1288?0x1260<=c:0x128A<=c:0x1290<=c:c<=0x30FF?c<=0x1FB4?c<=0x180D?c<=0x16EA?c<=0x135A?c<=0x12C5?c<=0x12BE?c<=0x12B5?0x12B2<=c:0x12B8<=c:c<=0x12C0?0x12C0<=c:0x12C2<=c:c<=0x1310?c<=0x12D6?0x12C8<=c:0x12D8<=c:c<=0x1315?0x1312<=c:0x1318<=c:c<=0x166C?c<=0x138F?c<=0x135F?0x135F<=c:0x1380<=c:c<=0x13F4?0x13A0<=c:0x1401<=c:c<=0x169A?c<=0x1676?0x166F<=c:0x1681<=c:0x16A0<=c:c<=0x1770?c<=0x1734?c<=0x170C?c<=0x16F0?0x16EE<=c:0x1700<=c:c<=0x1714?0x170E<=c:0x1720<=c:c<=0x176C?c<=0x1753?0x1740<=c:0x1760<=c:0x176E<=c:c<=0x17D7?c<=0x17B3?c<=0x1773?0x1772<=c:0x1780<=c:c<=0x17D3?0x17B6<=c:0x17D7<=c:c<=0x17E9?c<=0x17DD?0x17DC<=c:0x17E0<=c:0x180B<=c:c<=0x1B59?c<=0x196D?c<=0x191C?c<=0x1877?c<=0x1819?0x1810<=c:0x1820<=c:c<=0x18A9?0x1880<=c:0x1900<=c:c<=0x193B?c<=0x192B?0x1920<=c:0x1930<=c:0x1946<=c:c<=0x19D9?c<=0x19A9?c<=0x1974?0x1970<=c:0x1980<=c:c<=0x19C9?0x19B0<=c:0x19D0<=c:c<=0x1B4B?c<=0x1A1B?0x1A00<=c:0x1B00<=c:0x1B50<=c:c<=0x1F45?c<=0x1EF9?c<=0x1DCA?c<=0x1B73?0x1B6B<=c:0x1D00<=c:c<=0x1E9B?0x1DFE<=c:0x1EA0<=c:c<=0x1F1D?c<=0x1F15?0x1F00<=c:0x1F18<=c:0x1F20<=c:c<=0x1F5B?c<=0x1F57?c<=0x1F4D?0x1F48<=c:0x1F50<=c:c<=0x1F59?0x1F59<=c:0x1F5B<=c:c<=0x1F7D?c<=0x1F5D?0x1F5D<=c:0x1F5F<=c:0x1F80<=c:c<=0x2149?c<=0x20DC?c<=0x1FF4?c<=0x1FCC?c<=0x1FBE?c<=0x1FBC?0x1FB6<=c:0x1FBE<=c:c<=0x1FC4?0x1FC2<=c:0x1FC6<=c:c<=0x1FDB?c<=0x1FD3?0x1FD0<=c:0x1FD6<=c:c<=0x1FEC?0x1FE0<=c:0x1FF2<=c:c<=0x2071?c<=0x2040?c<=0x1FFC?0x1FF6<=c:0x203F<=c:c<=0x2054?0x2054<=c:0x2071<=c:c<=0x2094?c<=0x207F?0x207F<=c:0x2090<=c:0x20D0<=c:c<=0x211D?c<=0x2107?c<=0x20EF?c<=0x20E1?0x20E1<=c:0x20E5<=c:c<=0x2102?0x2102<=c:0x2107<=c:c<=0x2115?c<=0x2113?0x210A<=c:0x2115<=c:0x2119<=c:c<=0x212D?c<=0x2126?c<=0x2124?0x2124<=c:0x2126<=c:c<=0x2128?0x2128<=c:0x212A<=c:c<=0x213F?c<=0x2139?0x212F<=c:0x213C<=c:0x2145<=c:c<=0x2DB6?c<=0x2CE4?c<=0x2C5E?c<=0x2184?c<=0x214E?0x214E<=c:0x2160<=c:c<=0x2C2E?0x2C00<=c:0x2C30<=c:c<=0x2C77?c<=0x2C6C?0x2C60<=c:0x2C74<=c:0x2C80<=c:c<=0x2D96?c<=0x2D65?c<=0x2D25?0x2D00<=c:0x2D30<=c:c<=0x2D6F?0x2D6F<=c:0x2D80<=c:c<=0x2DAE?c<=0x2DA6?0x2DA0<=c:0x2DA8<=c:0x2DB0<=c:c<=0x302F?c<=0x2DD6?c<=0x2DC6?c<=0x2DBE?0x2DB8<=c:0x2DC0<=c:c<=0x2DCE?0x2DC8<=c:0x2DD0<=c:c<=0x3007?c<=0x2DDE?0x2DD8<=c:0x3005<=c:0x3021<=c:c<=0x309A?c<=0x303C?c<=0x3035?0x3031<=c:0x3038<=c:c<=0x3096?0x3041<=c:0x3099<=c:c<=0x30FA?c<=0x309F?0x309D<=c:0x30A1<=c:0x30FC<=c:c<=0x1049D?c<=0xFE23?c<=0xFB06?c<=0xA71A?c<=0x31FF?c<=0x318E?c<=0x312C?0x3105<=c:0x3131<=c:c<=0x31B7?0x31A0<=c:0x31F0<=c:c<=0x9FBB?c<=0x4DB5?0x3400<=c:0x4E00<=c:c<=0xA48C?0xA000<=c:0xA717<=c:c<=0xFA2D?c<=0xA873?c<=0xA827?0xA800<=c:0xA840<=c:c<=0xD7A3?0xAC00<=c:0xF900<=c:c<=0xFAD9?c<=0xFA6A?0xFA30<=c:0xFA70<=c:0xFB00<=c:c<=0xFB44?c<=0xFB3C?c<=0xFB28?c<=0xFB17?0xFB13<=c:0xFB1D<=c:c<=0xFB36?0xFB2A<=c:0xFB38<=c:c<=0xFB41?c<=0xFB3E?0xFB3E<=c:0xFB40<=c:0xFB43<=c:c<=0xFDC7?c<=0xFD3D?c<=0xFBB1?0xFB46<=c:0xFBD3<=c:c<=0xFD8F?0xFD50<=c:0xFD92<=c:c<=0xFE0F?c<=0xFDFB?0xFDF0<=c:0xFE00<=c:0xFE20<=c:c<=0x1000B?c<=0xFF3F?c<=0xFEFC?c<=0xFE4F?c<=0xFE34?0xFE33<=c:0xFE4D<=c:c<=0xFE74?0xFE70<=c:0xFE76<=c:c<=0xFF3A?c<=0xFF19?0xFF10<=c:0xFF21<=c:0xFF3F<=c:c<=0xFFCF?c<=0xFFBE?c<=0xFF5A?0xFF41<=c:0xFF66<=c:c<=0xFFC7?0xFFC2<=c:0xFFCA<=c:c<=0xFFDC?c<=0xFFD7?0xFFD2<=c:0xFFDA<=c:0x10000<=c:c<=0x10174?c<=0x1004D?c<=0x1003A?c<=0x10026?0x1000D<=c:0x10028<=c:c<=0x1003D?0x1003C<=c:0x1003F<=c:c<=0x100FA?c<=0x1005D?0x10050<=c:0x10080<=c:0x10140<=c:c<=0x103C3?c<=0x1034A?c<=0x1031E?0x10300<=c:0x10330<=c:c<=0x1039D?0x10380<=c:0x103A0<=c:c<=0x103D5?c<=0x103CF?0x103C8<=c:0x103D1<=c:0x10400<=c:c<=0x1D4AC?c<=0x10A3F?c<=0x10915?c<=0x10835?c<=0x10805?c<=0x104A9?0x104A0<=c:0x10800<=c:c<=0x10808?0x10808<=c:0x1080A<=c:c<=0x1083C?c<=0x10838?0x10837<=c:0x1083C<=c:c<=0x1083F?0x1083F<=c:0x10900<=c:c<=0x10A17?c<=0x10A06?c<=0x10A03?0x10A00<=c:0x10A05<=c:c<=0x10A13?0x10A0C<=c:0x10A15<=c:c<=0x10A3A?c<=0x10A33?0x10A19<=c:0x10A38<=c:0x10A3F<=c:c<=0x1D1AD?c<=0x1D172?c<=0x12462?c<=0x1236E?0x12000<=c:0x12400<=c:c<=0x1D169?0x1D165<=c:0x1D16D<=c:c<=0x1D18B?c<=0x1D182?0x1D17B<=c:0x1D185<=c:0x1D1AA<=c:c<=0x1D49F?c<=0x1D454?c<=0x1D244?0x1D242<=c:0x1D400<=c:c<=0x1D49C?0x1D456<=c:0x1D49E<=c:c<=0x1D4A6?c<=0x1D4A2?0x1D4A2<=c:0x1D4A5<=c:0x1D4A9<=c:c<=0x1D6C0?c<=0x1D51C?c<=0x1D505?c<=0x1D4BB?c<=0x1D4B9?0x1D4AE<=c:0x1D4BB<=c:c<=0x1D4C3?0x1D4BD<=c:0x1D4C5<=c:c<=0x1D514?c<=0x1D50A?0x1D507<=c:0x1D50D<=c:0x1D516<=c:c<=0x1D546?c<=0x1D53E?c<=0x1D539?0x1D51E<=c:0x1D53B<=c:c<=0x1D544?0x1D540<=c:0x1D546<=c:c<=0x1D6A5?c<=0x1D550?0x1D54A<=c:0x1D552<=c:0x1D6A8<=c:c<=0x1D788?c<=0x1D734?c<=0x1D6FA?c<=0x1D6DA?0x1D6C2<=c:0x1D6DC<=c:c<=0x1D714?0x1D6FC<=c:0x1D716<=c:c<=0x1D76E?c<=0x1D74E?0x1D736<=c:0x1D750<=c:0x1D770<=c:c<=0x1D7FF?c<=0x1D7C2?c<=0x1D7A8?0x1D78A<=c:0x1D7AA<=c:c<=0x1D7CB?0x1D7C4<=c:0x1D7CE<=c:c<=0x2FA1D?c<=0x2A6D6?0x20000<=c:0x2F800<=c:0xE0100<=c&&c<=0xE01EF;}
return{isDigit:isDigit,isIdentifierStart:isIdentifierStart,isHexDigit:isHexDigit,isAlpha:isAlpha,isSpace:isSpace,isLineTerminator:isLineTerminator,isFormatChar:isFormatChar,isIdentifierPart:isIdentifierPart};}();}}.call(null)){this.Concurrent.Thread.Compiler.isDigit=isDigit;this.Concurrent.Thread.Compiler.isIdentifierStart=isIdentifierStart;this.Concurrent.Thread.Compiler.isHexDigit=isHexDigit;this.Concurrent.Thread.Compiler.isAlpha=isAlpha;this.Concurrent.Thread.Compiler.isSpace=isSpace;this.Concurrent.Thread.Compiler.isLineTerminator=isLineTerminator;this.Concurrent.Thread.Compiler.isFormatChar=isFormatChar;this.Concurrent.Thread.Compiler.isIdentifierPart=isIdentifierPart;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Http||(typeof this.Concurrent.Thread.Http!='object'&&typeof this.Concurrent.Thread.Http!='function'))this.Concurrent.Thread.Http=new Object();if(this.Concurrent.Thread.Http.send===undefined)this.Concurrent.Thread.Http.send=undefined;if(this.Concurrent.Thread.Http.get===undefined)this.Concurrent.Thread.Http.get=undefined;if(this.Concurrent.Thread.Http.post===undefined)this.Concurrent.Thread.Http.post=undefined;with(function(){with(Concurrent.Thread.Http){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Http';var createXMLHttpRequest;try{new XMLHttpRequest();createXMLHttpRequest=function(){return new XMLHttpRequest();};}catch(e){try{new ActiveXObject("Msxml2.XMLHTTP");createXMLHttpRequest=function(){return new ActiveXObject("Msxml2.XMLHTTP");};}catch(e){try{new ActiveXObject("Microsoft.XMLHTTP");createXMLHttpRequest=function(){return new ActiveXObject("Microsoft.XMLHTTP");};}catch(e){throw new Error(NAMESPACE+": can't load XMLHttpRequest object");}}}
function send(method,url,body,headers){throw new Error(NAMESPACE+".send is unusable in non-compiled function");}
var LoadedException={};send.$Concurrent_Thread_compiled=function($this,$args,$cont){var method=$args[0],url=$args[1],body=$args[2],headers=$args[3];if(!headers||!(headers instanceof Array))headers=[];var req=createXMLHttpRequest();req.open(method,url,true);for(var i=0;i<headers.length;i+=2){req.setRequestHeader(headers[i],headers[i+1]);}
var self=Concurrent.Thread.self();var loaded=false;var cache_hit=true;req.onreadystatechange=function(){if(req.readyState==4){loaded=true;if(!cache_hit)self.notify(LoadedException);}};req.send(body);cache_hit=false;if(loaded){return{continuation:$cont,ret_val:req,timeout:undefined};}else{var ex_handler={procedure:function(e){if(e===LoadedException){return{continuation:$cont,ret_val:req,timeout:undefined};}else{try{req.abort();}catch(_){}
return{continuation:$cont.exception,ret_val:e,timeout:undefined};}},this_val:null};ex_handler.exception=ex_handler;return{timeout:-1,continuation:{procedure:null,this_val:null,exception:ex_handler}};}};function get(url,headers){throw new Error(NAMESPACE+".get is unusable in non-compiled function");}
get.$Concurrent_Thread_compiled=function($this,$args,$cont){return send.$Concurrent_Thread_compiled(null,["GET",$args[0],$args[1],null],$cont);}
function post(url,body,headers){throw new Error(NAMESPACE+".post is unusable in non-compiled function");}
post.$Concurrent_Thread_compiled=function($this,$args,$cont){var url=$args[0],body=$args[1],headers=$args[2];if(typeof body=="object"){var vals=[];for(var i in body){if(body.hasOwnProperty(i)){vals.push(encodeURIComponent(i)+"="+encodeURIComponent(body[i]));}}
body=vals.join("&");}
if(!headers||!(headers instanceof Array))headers=[];var content_type_exists=false;for(var i=0;i<headers.length;i+=2){if(String(headers[i]).match(/^Content-type$/i)){content_type_exists=true;break;}}
if(!content_type_exists){headers=headers.concat("Content-type","application/x-www-form-urlencoded");}
return send.$Concurrent_Thread_compiled(null,["POST",url,body,headers],$cont);};return{send:send,post:post,get:get};}();}}.call(null)){this.Concurrent.Thread.Http.send=send;this.Concurrent.Thread.Http.post=post;this.Concurrent.Thread.Http.get=get;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(this.Concurrent.Thread.Mutex===undefined)this.Concurrent.Thread.Mutex=undefined;with(function(){with(Data){with(Data.Error){with(Concurrent){with(Concurrent.Thread){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread';function Mutex(){this._acquiring=null;this._waiting=new LinkedList();}
var proto=Mutex.prototype;proto.isAcquirable=function(){return!this._acquiring&&this._waiting.isEmpty();};proto.acquire=function(){throw new Error("can't `acquire' in non-converted function");};proto.acquire.$Concurrent_Thread_compiled=function($this,$args,$cont){if($this.isAcquirable()){$this._acquiring=Thread.self();return{continuation:$cont,ret_val:void 0,timeout:void 0};}else{$this._waiting.push(Thread.self());var callee=arguments.callee;return{continuation:{procedure:null,this_val:null,exception:{procedure:function(e){if(e===releasedException){if($this._waiting.shift()!==Thread.self()){return{continuation:$cont.exception,ret_val:new IllegalStateError("unknown state (maybe bug)"),timeout:void 0};}
$this._acquiring=Thread.self();return{continuation:$cont,ret_val:void 0,timeout:void 0};}else{$this._waiting.head().find(function(it){return it===Thread.self();}).remove();return{continuation:$cont.exception,ret_val:e,timeout:void 0};}},this_val:null,exception:$cont.exception}},ret_val:void 0,timeout:-1};}};proto.release=function(){if(!this._acquiring){throw new IllegalStateError("mutex is not locked");}
if(this._acquiring!==Thread.self()){throw new IllegalStateError("mutex can be released only by the thread locking it");}
this._acquiring=null;if(!this._waiting.isEmpty()){this._waiting.head().value().notify(releasedException);}};var releasedException={};return{Mutex:Mutex};}();}}}}}.call(null)){this.Concurrent.Thread.Mutex=Mutex;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.Expression===undefined)this.Concurrent.Thread.Compiler.Expression=undefined;if(this.Concurrent.Thread.Compiler.UnaryExpression===undefined)this.Concurrent.Thread.Compiler.UnaryExpression=undefined;if(this.Concurrent.Thread.Compiler.BinaryExpression===undefined)this.Concurrent.Thread.Compiler.BinaryExpression=undefined;if(this.Concurrent.Thread.Compiler.ThisExpression===undefined)this.Concurrent.Thread.Compiler.ThisExpression=undefined;if(this.Concurrent.Thread.Compiler.Identifier===undefined)this.Concurrent.Thread.Compiler.Identifier=undefined;if(this.Concurrent.Thread.Compiler.Literal===undefined)this.Concurrent.Thread.Compiler.Literal=undefined;if(this.Concurrent.Thread.Compiler.NumberLiteral===undefined)this.Concurrent.Thread.Compiler.NumberLiteral=undefined;if(this.Concurrent.Thread.Compiler.StringLiteral===undefined)this.Concurrent.Thread.Compiler.StringLiteral=undefined;if(this.Concurrent.Thread.Compiler.RegExpLiteral===undefined)this.Concurrent.Thread.Compiler.RegExpLiteral=undefined;if(this.Concurrent.Thread.Compiler.NullLiteral===undefined)this.Concurrent.Thread.Compiler.NullLiteral=undefined;if(this.Concurrent.Thread.Compiler.BooleanLiteral===undefined)this.Concurrent.Thread.Compiler.BooleanLiteral=undefined;if(this.Concurrent.Thread.Compiler.TrueLiteral===undefined)this.Concurrent.Thread.Compiler.TrueLiteral=undefined;if(this.Concurrent.Thread.Compiler.FalseLiteral===undefined)this.Concurrent.Thread.Compiler.FalseLiteral=undefined;if(this.Concurrent.Thread.Compiler.ArrayInitializer===undefined)this.Concurrent.Thread.Compiler.ArrayInitializer=undefined;if(this.Concurrent.Thread.Compiler.Elision===undefined)this.Concurrent.Thread.Compiler.Elision=undefined;if(this.Concurrent.Thread.Compiler.ObjectInitializer===undefined)this.Concurrent.Thread.Compiler.ObjectInitializer=undefined;if(this.Concurrent.Thread.Compiler.FunctionExpression===undefined)this.Concurrent.Thread.Compiler.FunctionExpression=undefined;if(this.Concurrent.Thread.Compiler.DotAccessor===undefined)this.Concurrent.Thread.Compiler.DotAccessor=undefined;if(this.Concurrent.Thread.Compiler.BracketAccessor===undefined)this.Concurrent.Thread.Compiler.BracketAccessor=undefined;if(this.Concurrent.Thread.Compiler.NewExpression===undefined)this.Concurrent.Thread.Compiler.NewExpression=undefined;if(this.Concurrent.Thread.Compiler.CallExpression===undefined)this.Concurrent.Thread.Compiler.CallExpression=undefined;if(this.Concurrent.Thread.Compiler.PostIncExpression===undefined)this.Concurrent.Thread.Compiler.PostIncExpression=undefined;if(this.Concurrent.Thread.Compiler.PostDecExpression===undefined)this.Concurrent.Thread.Compiler.PostDecExpression=undefined;if(this.Concurrent.Thread.Compiler.PreIncExpression===undefined)this.Concurrent.Thread.Compiler.PreIncExpression=undefined;if(this.Concurrent.Thread.Compiler.PreDecExpression===undefined)this.Concurrent.Thread.Compiler.PreDecExpression=undefined;if(this.Concurrent.Thread.Compiler.DeleteExpression===undefined)this.Concurrent.Thread.Compiler.DeleteExpression=undefined;if(this.Concurrent.Thread.Compiler.VoidExpression===undefined)this.Concurrent.Thread.Compiler.VoidExpression=undefined;if(this.Concurrent.Thread.Compiler.TypeofExpression===undefined)this.Concurrent.Thread.Compiler.TypeofExpression=undefined;if(this.Concurrent.Thread.Compiler.PosExpression===undefined)this.Concurrent.Thread.Compiler.PosExpression=undefined;if(this.Concurrent.Thread.Compiler.NegExpression===undefined)this.Concurrent.Thread.Compiler.NegExpression=undefined;if(this.Concurrent.Thread.Compiler.BitNotExpression===undefined)this.Concurrent.Thread.Compiler.BitNotExpression=undefined;if(this.Concurrent.Thread.Compiler.NotExpression===undefined)this.Concurrent.Thread.Compiler.NotExpression=undefined;if(this.Concurrent.Thread.Compiler.MulExpression===undefined)this.Concurrent.Thread.Compiler.MulExpression=undefined;if(this.Concurrent.Thread.Compiler.DivExpression===undefined)this.Concurrent.Thread.Compiler.DivExpression=undefined;if(this.Concurrent.Thread.Compiler.ModExpression===undefined)this.Concurrent.Thread.Compiler.ModExpression=undefined;if(this.Concurrent.Thread.Compiler.AddExpression===undefined)this.Concurrent.Thread.Compiler.AddExpression=undefined;if(this.Concurrent.Thread.Compiler.SubExpression===undefined)this.Concurrent.Thread.Compiler.SubExpression=undefined;if(this.Concurrent.Thread.Compiler.LShiftExpression===undefined)this.Concurrent.Thread.Compiler.LShiftExpression=undefined;if(this.Concurrent.Thread.Compiler.RShiftExpression===undefined)this.Concurrent.Thread.Compiler.RShiftExpression=undefined;if(this.Concurrent.Thread.Compiler.URShiftExpression===undefined)this.Concurrent.Thread.Compiler.URShiftExpression=undefined;if(this.Concurrent.Thread.Compiler.LessThanExpression===undefined)this.Concurrent.Thread.Compiler.LessThanExpression=undefined;if(this.Concurrent.Thread.Compiler.GreaterThanExpression===undefined)this.Concurrent.Thread.Compiler.GreaterThanExpression=undefined;if(this.Concurrent.Thread.Compiler.LessEqualExpression===undefined)this.Concurrent.Thread.Compiler.LessEqualExpression=undefined;if(this.Concurrent.Thread.Compiler.GreaterEqualExpression===undefined)this.Concurrent.Thread.Compiler.GreaterEqualExpression=undefined;if(this.Concurrent.Thread.Compiler.InstanceofExpression===undefined)this.Concurrent.Thread.Compiler.InstanceofExpression=undefined;if(this.Concurrent.Thread.Compiler.InExpression===undefined)this.Concurrent.Thread.Compiler.InExpression=undefined;if(this.Concurrent.Thread.Compiler.EqualExpression===undefined)this.Concurrent.Thread.Compiler.EqualExpression=undefined;if(this.Concurrent.Thread.Compiler.NotEqualExpression===undefined)this.Concurrent.Thread.Compiler.NotEqualExpression=undefined;if(this.Concurrent.Thread.Compiler.StrictEqualExpression===undefined)this.Concurrent.Thread.Compiler.StrictEqualExpression=undefined;if(this.Concurrent.Thread.Compiler.StrictNotEqualExpression===undefined)this.Concurrent.Thread.Compiler.StrictNotEqualExpression=undefined;if(this.Concurrent.Thread.Compiler.BitAndExpression===undefined)this.Concurrent.Thread.Compiler.BitAndExpression=undefined;if(this.Concurrent.Thread.Compiler.BitXorExpression===undefined)this.Concurrent.Thread.Compiler.BitXorExpression=undefined;if(this.Concurrent.Thread.Compiler.BitOrExpression===undefined)this.Concurrent.Thread.Compiler.BitOrExpression=undefined;if(this.Concurrent.Thread.Compiler.AndExpression===undefined)this.Concurrent.Thread.Compiler.AndExpression=undefined;if(this.Concurrent.Thread.Compiler.OrExpression===undefined)this.Concurrent.Thread.Compiler.OrExpression=undefined;if(this.Concurrent.Thread.Compiler.ConditionalExpression===undefined)this.Concurrent.Thread.Compiler.ConditionalExpression=undefined;if(this.Concurrent.Thread.Compiler.AssignExpression===undefined)this.Concurrent.Thread.Compiler.AssignExpression=undefined;if(this.Concurrent.Thread.Compiler.SimpleAssignExpression===undefined)this.Concurrent.Thread.Compiler.SimpleAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.MulAssignExpression===undefined)this.Concurrent.Thread.Compiler.MulAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.DivAssignExpression===undefined)this.Concurrent.Thread.Compiler.DivAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.ModAssignExpression===undefined)this.Concurrent.Thread.Compiler.ModAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.AddAssignExpression===undefined)this.Concurrent.Thread.Compiler.AddAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.SubAssignExpression===undefined)this.Concurrent.Thread.Compiler.SubAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.LShiftAssignExpression===undefined)this.Concurrent.Thread.Compiler.LShiftAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.RShiftAssignExpression===undefined)this.Concurrent.Thread.Compiler.RShiftAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.URShiftAssignExpression===undefined)this.Concurrent.Thread.Compiler.URShiftAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.BitAndAssignExpression===undefined)this.Concurrent.Thread.Compiler.BitAndAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.BitXorAssignExpression===undefined)this.Concurrent.Thread.Compiler.BitXorAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.BitOrAssignExpression===undefined)this.Concurrent.Thread.Compiler.BitOrAssignExpression=undefined;if(this.Concurrent.Thread.Compiler.CommaExpression===undefined)this.Concurrent.Thread.Compiler.CommaExpression=undefined;with(function(){with(Data.Cons){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';function Expression(){}
var proto=Expression.prototype;proto.toString=function(){Kit.codeBug("Unimplemented method `toString' of class: "+this.constructor);};proto.containsFunctionCall=function(){Kit.codeBug("Unimplemented method `containsFunctionCall' of class: "+this.constructor);};proto.hasSideEffect=function(){Kit.codeBug("Unimplemented method `hasSideEffect' of class: "+this.constructor);};proto.hasLvalue=function(){return false;};function UnaryExpression(e){this.exp=e;}
var proto=UnaryExpression.prototype=new Expression();proto.constructor=UnaryExpression;proto.containsFunctionCall=function(){return this.exp.containsFunctionCall();};proto.hasSideEffect=function(){return this.exp.hasSideEffect();};function BinaryExpression(l,r){this.left=l;this.right=r;}
var proto=BinaryExpression.prototype=new Expression();proto.constructor=BinaryExpression;proto.containsFunctionCall=function(){return this.left.containsFunctionCall()||this.right.containsFunctionCall();};proto.hasSideEffect=function(){return this.left.hasSideEfect()||this.right.hasSideEffect();};function ThisExpression(){return THIS_EXPRESSION;}
var proto=ThisExpression.prototype=new Expression();proto.constructor=ThisExpression;proto.toString=function(){return"this";};proto.containsFunctionCall=function(){return false;};proto.hasSideEffect=function(){return false;};function temp(){}
temp.prototype=ThisExpression.prototype;var THIS_EXPRESSION=new temp();function Identifier(s){this.string=String(s);this.value=eval('"'+this.string+'"');}
var proto=Identifier.prototype=new Expression();proto.constructor=Identifier;proto.toString=function(){return this.string;};proto.valueOf=function(){return this.value;};proto.hasLvalue=function(){return true;};proto.containsFunctionCall=function(){return false;};proto.hasSideEffect=function(){return false;};function Literal(s){this.string=String(s);this.value=eval(this.string);}
var proto=Literal.prototype=new Expression();proto.constructor=Literal;proto.toString=function(){return this.string;};proto.valueOf=function(){return this.value;};proto.containsFunctionCall=function(){return false;};proto.hasSideEffect=function(){return false;};function NumberLiteral(s){Literal.apply(this,arguments);}
var proto=NumberLiteral.prototype=new Literal();proto.constructor=NumberLiteral;function StringLiteral(s){Literal.apply(this,arguments);}
var proto=StringLiteral.prototype=new Literal();proto.constructor=StringLiteral;function RegExpLiteral(s){Literal.apply(this,arguments);}
var proto=RegExpLiteral.prototype=new Literal();proto.constructor=RegExpLiteral;function NullLiteral(){return NULL_LITERAL;}
var proto=NullLiteral.prototype=new Literal();proto.constructor=NullLiteral;proto.string="null";proto.vakue=null;proto.toString=function(){return"null";};proto.valueOf=function(){return null;};function temp(){}
temp.prototype=NullLiteral.prototype;var NULL_LITERAL=new temp();function BooleanLiteral(){}
var proto=BooleanLiteral.prototype=new Literal();proto.constructor=BooleanLiteral;function TrueLiteral(){return TRUE_LITERAL;}
var proto=TrueLiteral.prototype=new BooleanLiteral();proto.constructor=TrueLiteral;proto.string="true";proto.vakue=true;proto.toString=function(){return"true";};proto.valueOf=function(){return true;};function temp(){}
temp.prototype=TrueLiteral.prototype;var TRUE_LITERAL=new temp();function FalseLiteral(){return FALSE_LITERAL;}
var proto=FalseLiteral.prototype=new BooleanLiteral();proto.constructor=FalseLiteral;proto.string="false";proto.vakue=false;proto.toString=function(){return"false";};proto.valueOf=function(){return false;};function temp(){}
temp.prototype=FalseLiteral.prototype;var FALSE_LITERAL=new temp();function ArrayInitializer(elems){this.elems=elems;}
var proto=ArrayInitializer.prototype=new Expression();proto.constructor=ArrayInitializer;proto.toString=function(){return"["+this.elems.join(", ")+"]";};proto.containsFunctionCall=function(){for(var i=0;i<this.elems.length;i++){if(this.elems[i].containsFunctionCall())return true;}
return false;};proto.hasSideEfect=function(){for(var i=0;i<this.elems.length;i++){if(this.elems[i].hasSideEffect())return true;}
return false;};function Elision(){}
var proto=Elision.prototype=new Expression();proto.constructor=Elision;proto.toString=function(){return"";};proto.containsFunctionCall=function(){return false;};proto.hasSideEffect=function(){return false;};function ObjectInitializer(v){this.pairs=v;}
var proto=ObjectInitializer.prototype=new Expression();proto.constructor=ObjectInitializer;proto.toString=function(){var buf=[];for(var i=0;i<this.pairs.length;i++){buf.push(String(this.pairs[i].prop)+":"+String(this.pairs[i].exp));}
return"{"+buf.join(", ")+"}";};proto.containsFunctionCall=function(){for(var i=0;i<this.pairs.length;i++){if(this.pairs[i].exp.containsFunctionCall())return true;}
return false;};proto.hasSideEffect=function(){for(var i=0;i<this.pairs.length;i++){if(this.pairs[i].exp.hasSideEffect())return true;}
return false;};function FunctionExpression(name,params,body){this.name=name;this.params=params;this.body=body;}
var proto=FunctionExpression.prototype=new Expression();proto.constructor=FunctionExpression;proto.toString=function(){var buf=["(function "];if(this.name)buf.push(this.name);buf.push("(",this.params.join(", "),") {\n");this.body.forEach(function(it){buf.push(it,"\n");});buf.push("})");return buf.join("");};proto.containsFunctionCall=function(){return false;};proto.hasSideEffect=function(){return false;};function DotAccessor(base,prop){this.base=base;this.prop=prop;}
var proto=DotAccessor.prototype=new Expression();proto.constructor=DotAccessor;proto.toString=function(){return String(this.base)+"."+String(this.prop);};proto.hasLvalue=function(){return true;};proto.containsFunctionCall=function(){return this.base.containsFunctionCall();};proto.hasSideEffect=function(){return this.base.hasSideEffect();};function BracketAccessor(left,right){BinaryExpression.apply(this,arguments);}
var proto=BracketAccessor.prototype=new BinaryExpression();proto.constructor=BracketAccessor;proto.toString=function(){return[this.left,"[",this.right,"]"].join("");};proto.hasLvalue=function(){return true;};function NewExpression(func,args){this.func=func;this.args=args;}
var proto=NewExpression.prototype=new Expression();proto.constructor=NewExpression;proto.toString=function(){return["new ",this.func,"(",this.args.join(", "),")"].join("");};proto.containsFunctionCall=function(){return true;};proto.hasSideEffect=function(){return true;};function CallExpression(func,args){this.func=func;this.args=args;}
var proto=CallExpression.prototype=new Expression();proto.constructor=CallExpression;proto.toString=function(){return[this.func,"(",this.args.join(", "),")"].join("");};proto.containsFunctionCall=function(){return true;};proto.hasSideEffect=function(){return true;};function PostIncExpression(e){UnaryExpression.apply(this,arguments);}
var proto=PostIncExpression.prototype=new UnaryExpression();proto.constructor=PostIncExpression;proto.toString=function(){return String(this.exp)+"++";};proto.hasSideEffect=function(){return true;};function PostDecExpression(e){UnaryExpression.apply(this,arguments);}
var proto=PostDecExpression.prototype=new UnaryExpression();proto.constructor=PostDecExpression;proto.toString=function(){return String(this.exp)+"--";};proto.hasSideEffect=function(){return true;};function PreIncExpression(e){UnaryExpression.apply(this,arguments);}
var proto=PreIncExpression.prototype=new UnaryExpression();proto.constructor=PreIncExpression;proto.toString=function(){return"++"+String(this.exp);};proto.hasSideEffect=function(){return true;};function PreDecExpression(e){UnaryExpression.apply(this,arguments);}
var proto=PreDecExpression.prototype=new UnaryExpression();proto.constructor=PreDecExpression;proto.toString=function(){return"--"+String(this.exp);};proto.hasSideEffect=function(){return true;};function DeleteExpression(e){UnaryExpression.apply(this,arguments);}
var proto=DeleteExpression.prototype=new UnaryExpression();proto.constructor=DeleteExpression;proto.toString=function(){return"delete "+String(this.exp);};proto.hasSideEffect=function(){return true;};function VoidExpression(e){UnaryExpression.apply(this,arguments);}
var proto=VoidExpression.prototype=new UnaryExpression();proto.constructor=VoidExpression;proto.toString=function(){return"void "+String(this.exp);};function TypeofExpression(e){UnaryExpression.apply(this,arguments);}
var proto=TypeofExpression.prototype=new UnaryExpression();proto.constructor=TypeofExpression;proto.toString=function(){return"typeof "+String(this.exp);};function PosExpression(e){UnaryExpression.apply(this,arguments);}
var proto=PosExpression.prototype=new UnaryExpression();proto.constructor=PosExpression;proto.toString=function(){return"+ "+String(this.exp);};function NegExpression(e){UnaryExpression.apply(this,arguments);}
var proto=NegExpression.prototype=new UnaryExpression();proto.constructor=NegExpression;proto.toString=function(){return"- "+String(this.exp);};function BitNotExpression(e){UnaryExpression.apply(this,arguments);}
var proto=BitNotExpression.prototype=new UnaryExpression();proto.constructor=BitNotExpression;proto.toString=function(){return"~"+String(this.exp);};function NotExpression(e){UnaryExpression.apply(this,arguments);}
var proto=NotExpression.prototype=new UnaryExpression();proto.constructor=NotExpression;proto.toString=function(){return"!"+String(this.exp);};function MulExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=MulExpression.prototype=new BinaryExpression();proto.constructor=MulExpression;proto.toString=function(){return["(",this.left," * ",this.right,")"].join("");};function DivExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=DivExpression.prototype=new BinaryExpression();proto.constructor=DivExpression;proto.toString=function(){return["(",this.left," / ",this.right,")"].join("");};function ModExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=ModExpression.prototype=new BinaryExpression();proto.constructor=ModExpression;proto.toString=function(){return["(",this.left," % ",this.right,")"].join("");};function AddExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=AddExpression.prototype=new BinaryExpression();proto.constructor=AddExpression;proto.toString=function(){return["(",this.left," + ",this.right,")"].join("");};function SubExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=SubExpression.prototype=new BinaryExpression();proto.constructor=SubExpression;proto.toString=function(){return["(",this.left," - ",this.right,")"].join("");};function LShiftExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=LShiftExpression.prototype=new BinaryExpression();proto.constructor=LShiftExpression;proto.toString=function(){return["(",this.left," << ",this.right,")"].join("");};function RShiftExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=RShiftExpression.prototype=new BinaryExpression();proto.constructor=RShiftExpression;proto.toString=function(){return["(",this.left," >> ",this.right,")"].join("");};function URShiftExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=URShiftExpression.prototype=new BinaryExpression();proto.constructor=URShiftExpression;proto.toString=function(){return["(",this.left," >>> ",this.right,")"].join("");};function LessThanExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=LessThanExpression.prototype=new BinaryExpression();proto.constructor=LessThanExpression;proto.toString=function(){return["(",this.left," < ",this.right,")"].join("");};function GreaterThanExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=GreaterThanExpression.prototype=new BinaryExpression();proto.constructor=GreaterThanExpression;proto.toString=function(){return["(",this.left," > ",this.right,")"].join("");};function LessEqualExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=LessEqualExpression.prototype=new BinaryExpression();proto.constructor=LessEqualExpression;proto.toString=function(){return["(",this.left," <= ",this.right,")"].join("");};function GreaterEqualExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=GreaterEqualExpression.prototype=new BinaryExpression();proto.constructor=GreaterEqualExpression;proto.toString=function(){return["(",this.left," >= ",this.right,")"].join("");};function InstanceofExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=InstanceofExpression.prototype=new BinaryExpression();proto.constructor=InstanceofExpression;proto.toString=function(){return["(",this.left," instanceof ",this.right,")"].join("");};function InExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=InExpression.prototype=new BinaryExpression();proto.constructor=InExpression;proto.toString=function(){return["(",this.left," in ",this.right,")"].join("");};function EqualExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=EqualExpression.prototype=new BinaryExpression();proto.constructor=EqualExpression;proto.toString=function(){return["(",this.left," == ",this.right,")"].join("");};function NotEqualExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=NotEqualExpression.prototype=new BinaryExpression();proto.constructor=NotEqualExpression;proto.toString=function(){return["(",this.left," != ",this.right,")"].join("");};function StrictEqualExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=StrictEqualExpression.prototype=new BinaryExpression();proto.constructor=StrictEqualExpression;proto.toString=function(){return["(",this.left," === ",this.right,")"].join("");};function StrictNotEqualExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=StrictNotEqualExpression.prototype=new BinaryExpression();proto.constructor=StrictNotEqualExpression;proto.toString=function(){return["(",this.left," !== ",this.right,")"].join("");};function BitAndExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=BitAndExpression.prototype=new BinaryExpression();proto.constructor=BitAndExpression;proto.toString=function(){return["(",this.left," & ",this.right,")"].join("");};function BitXorExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=BitXorExpression.prototype=new BinaryExpression();proto.constructor=BitXorExpression;proto.toString=function(){return["(",this.left," ^ ",this.right,")"].join("");};function BitOrExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=BitOrExpression.prototype=new BinaryExpression();proto.constructor=BitOrExpression;proto.toString=function(){return["(",this.left," | ",this.right,")"].join("");};function AndExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=AndExpression.prototype=new BinaryExpression();proto.constructor=AndExpression;proto.toString=function(){return["(",this.left," && ",this.right,")"].join("");};function OrExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=OrExpression.prototype=new BinaryExpression();proto.constructor=OrExpression;proto.toString=function(){return["(",this.left," || ",this.right,")"].join("");};function ConditionalExpression(c,t,f){this.cond=c;this.texp=t;this.fexp=f;}
var proto=ConditionalExpression.prototype=new Expression();proto.constructor=ConditionalExpression;proto.toString=function(){return["(",this.cond," ? ",this.texp," : ",this.fexp,")"].join("");};proto.containsFunctionCall=function(){return this.cond.containsFunctionCall()||this.texp.containsFunctionCall()||this.fexp.containsFunctionCall();};proto.hasSideEffect=function(){return this.cond.hasSideEffect()||this.texp.hasSideEffect()||this.fexp.hasSideEffect();};function AssignExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=AssignExpression.prototype=new BinaryExpression();proto.constructor=AssignExpression;proto.hasSideEffect=function(){return true;};function SimpleAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=SimpleAssignExpression.prototype=new AssignExpression();proto.constructor=SimpleAssignExpression;proto.toString=function(){return["(",this.left," = ",this.right,")"].join("");};function MulAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=MulAssignExpression.prototype=new AssignExpression();proto.constructor=MulAssignExpression;proto.toString=function(){return["(",this.left," *= ",this.right,")"].join("");};function DivAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=DivAssignExpression.prototype=new AssignExpression();proto.constructor=DivAssignExpression;proto.toString=function(){return["(",this.left," /= ",this.right,")"].join("");};function ModAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=ModAssignExpression.prototype=new AssignExpression();proto.constructor=ModAssignExpression;proto.toString=function(){return["(",this.left," %= ",this.right,")"].join("");};function AddAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=AddAssignExpression.prototype=new AssignExpression();proto.constructor=AddAssignExpression;proto.toString=function(){return["(",this.left," += ",this.right,")"].join("");};function SubAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=SubAssignExpression.prototype=new AssignExpression();proto.constructor=SubAssignExpression;proto.toString=function(){return["(",this.left," -= ",this.right,")"].join("");};function LShiftAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=LShiftAssignExpression.prototype=new AssignExpression();proto.constructor=LShiftAssignExpression;proto.toString=function(){return["(",this.left," <<= ",this.right,")"].join("");};function RShiftAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=RShiftAssignExpression.prototype=new AssignExpression();proto.constructor=RShiftAssignExpression;proto.toString=function(){return["(",this.left," >>= ",this.right,")"].join("");};function URShiftAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=URShiftAssignExpression.prototype=new AssignExpression();proto.constructor=URShiftAssignExpression;proto.toString=function(){return["(",this.left," >>>= ",this.right,")"].join("");};function BitAndAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=BitAndAssignExpression.prototype=new AssignExpression();proto.constructor=BitAndAssignExpression;proto.toString=function(){return["(",this.left," &= ",this.right,")"].join("");};function BitXorAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=BitXorAssignExpression.prototype=new AssignExpression();proto.constructor=BitXorAssignExpression;proto.toString=function(){return["(",this.left," ^= ",this.right,")"].join("");};function BitOrAssignExpression(left,right){AssignExpression.apply(this,arguments);}
var proto=BitOrAssignExpression.prototype=new AssignExpression();proto.constructor=BitOrAssignExpression;proto.toString=function(){return["(",this.left," |= ",this.right,")"].join("");};function CommaExpression(left,right){BinaryExpression.apply(this,arguments);}
var proto=CommaExpression.prototype=new BinaryExpression();proto.constructor=CommaExpression;proto.toString=function(){return["(",this.left,", ",this.right,")"].join("");};return{StrictEqualExpression:StrictEqualExpression,BooleanLiteral:BooleanLiteral,OrExpression:OrExpression,NotExpression:NotExpression,ThisExpression:ThisExpression,BitAndAssignExpression:BitAndAssignExpression,DivExpression:DivExpression,BracketAccessor:BracketAccessor,CommaExpression:CommaExpression,BitAndExpression:BitAndExpression,MulExpression:MulExpression,EqualExpression:EqualExpression,CallExpression:CallExpression,FunctionExpression:FunctionExpression,Elision:Elision,PostIncExpression:PostIncExpression,InstanceofExpression:InstanceofExpression,NullLiteral:NullLiteral,BitXorAssignExpression:BitXorAssignExpression,URShiftExpression:URShiftExpression,ConditionalExpression:ConditionalExpression,Identifier:Identifier,UnaryExpression:UnaryExpression,BitOrAssignExpression:BitOrAssignExpression,DivAssignExpression:DivAssignExpression,VoidExpression:VoidExpression,TypeofExpression:TypeofExpression,NewExpression:NewExpression,MulAssignExpression:MulAssignExpression,BinaryExpression:BinaryExpression,TrueLiteral:TrueLiteral,AssignExpression:AssignExpression,SubExpression:SubExpression,PreDecExpression:PreDecExpression,RegExpLiteral:RegExpLiteral,DeleteExpression:DeleteExpression,FalseLiteral:FalseLiteral,BitNotExpression:BitNotExpression,GreaterEqualExpression:GreaterEqualExpression,LessEqualExpression:LessEqualExpression,ModExpression:ModExpression,StringLiteral:StringLiteral,LShiftAssignExpression:LShiftAssignExpression,SubAssignExpression:SubAssignExpression,LShiftExpression:LShiftExpression,ModAssignExpression:ModAssignExpression,URShiftAssignExpression:URShiftAssignExpression,NegExpression:NegExpression,PosExpression:PosExpression,AddAssignExpression:AddAssignExpression,ArrayInitializer:ArrayInitializer,LessThanExpression:LessThanExpression,NumberLiteral:NumberLiteral,StrictNotEqualExpression:StrictNotEqualExpression,RShiftExpression:RShiftExpression,InExpression:InExpression,BitOrExpression:BitOrExpression,AndExpression:AndExpression,PostDecExpression:PostDecExpression,ObjectInitializer:ObjectInitializer,RShiftAssignExpression:RShiftAssignExpression,Expression:Expression,DotAccessor:DotAccessor,Literal:Literal,SimpleAssignExpression:SimpleAssignExpression,BitXorExpression:BitXorExpression,AddExpression:AddExpression,GreaterThanExpression:GreaterThanExpression,NotEqualExpression:NotEqualExpression,PreIncExpression:PreIncExpression};}();}}}.call(null)){this.Concurrent.Thread.Compiler.StrictEqualExpression=StrictEqualExpression;this.Concurrent.Thread.Compiler.BooleanLiteral=BooleanLiteral;this.Concurrent.Thread.Compiler.OrExpression=OrExpression;this.Concurrent.Thread.Compiler.NotExpression=NotExpression;this.Concurrent.Thread.Compiler.ThisExpression=ThisExpression;this.Concurrent.Thread.Compiler.BitAndAssignExpression=BitAndAssignExpression;this.Concurrent.Thread.Compiler.DivExpression=DivExpression;this.Concurrent.Thread.Compiler.BracketAccessor=BracketAccessor;this.Concurrent.Thread.Compiler.CommaExpression=CommaExpression;this.Concurrent.Thread.Compiler.BitAndExpression=BitAndExpression;this.Concurrent.Thread.Compiler.MulExpression=MulExpression;this.Concurrent.Thread.Compiler.EqualExpression=EqualExpression;this.Concurrent.Thread.Compiler.CallExpression=CallExpression;this.Concurrent.Thread.Compiler.FunctionExpression=FunctionExpression;this.Concurrent.Thread.Compiler.Elision=Elision;this.Concurrent.Thread.Compiler.PostIncExpression=PostIncExpression;this.Concurrent.Thread.Compiler.InstanceofExpression=InstanceofExpression;this.Concurrent.Thread.Compiler.NullLiteral=NullLiteral;this.Concurrent.Thread.Compiler.BitXorAssignExpression=BitXorAssignExpression;this.Concurrent.Thread.Compiler.URShiftExpression=URShiftExpression;this.Concurrent.Thread.Compiler.ConditionalExpression=ConditionalExpression;this.Concurrent.Thread.Compiler.Identifier=Identifier;this.Concurrent.Thread.Compiler.UnaryExpression=UnaryExpression;this.Concurrent.Thread.Compiler.BitOrAssignExpression=BitOrAssignExpression;this.Concurrent.Thread.Compiler.DivAssignExpression=DivAssignExpression;this.Concurrent.Thread.Compiler.VoidExpression=VoidExpression;this.Concurrent.Thread.Compiler.TypeofExpression=TypeofExpression;this.Concurrent.Thread.Compiler.NewExpression=NewExpression;this.Concurrent.Thread.Compiler.MulAssignExpression=MulAssignExpression;this.Concurrent.Thread.Compiler.BinaryExpression=BinaryExpression;this.Concurrent.Thread.Compiler.TrueLiteral=TrueLiteral;this.Concurrent.Thread.Compiler.AssignExpression=AssignExpression;this.Concurrent.Thread.Compiler.SubExpression=SubExpression;this.Concurrent.Thread.Compiler.PreDecExpression=PreDecExpression;this.Concurrent.Thread.Compiler.RegExpLiteral=RegExpLiteral;this.Concurrent.Thread.Compiler.DeleteExpression=DeleteExpression;this.Concurrent.Thread.Compiler.FalseLiteral=FalseLiteral;this.Concurrent.Thread.Compiler.BitNotExpression=BitNotExpression;this.Concurrent.Thread.Compiler.GreaterEqualExpression=GreaterEqualExpression;this.Concurrent.Thread.Compiler.LessEqualExpression=LessEqualExpression;this.Concurrent.Thread.Compiler.ModExpression=ModExpression;this.Concurrent.Thread.Compiler.StringLiteral=StringLiteral;this.Concurrent.Thread.Compiler.LShiftAssignExpression=LShiftAssignExpression;this.Concurrent.Thread.Compiler.SubAssignExpression=SubAssignExpression;this.Concurrent.Thread.Compiler.LShiftExpression=LShiftExpression;this.Concurrent.Thread.Compiler.ModAssignExpression=ModAssignExpression;this.Concurrent.Thread.Compiler.URShiftAssignExpression=URShiftAssignExpression;this.Concurrent.Thread.Compiler.NegExpression=NegExpression;this.Concurrent.Thread.Compiler.PosExpression=PosExpression;this.Concurrent.Thread.Compiler.AddAssignExpression=AddAssignExpression;this.Concurrent.Thread.Compiler.ArrayInitializer=ArrayInitializer;this.Concurrent.Thread.Compiler.LessThanExpression=LessThanExpression;this.Concurrent.Thread.Compiler.NumberLiteral=NumberLiteral;this.Concurrent.Thread.Compiler.StrictNotEqualExpression=StrictNotEqualExpression;this.Concurrent.Thread.Compiler.RShiftExpression=RShiftExpression;this.Concurrent.Thread.Compiler.InExpression=InExpression;this.Concurrent.Thread.Compiler.BitOrExpression=BitOrExpression;this.Concurrent.Thread.Compiler.AndExpression=AndExpression;this.Concurrent.Thread.Compiler.PostDecExpression=PostDecExpression;this.Concurrent.Thread.Compiler.ObjectInitializer=ObjectInitializer;this.Concurrent.Thread.Compiler.RShiftAssignExpression=RShiftAssignExpression;this.Concurrent.Thread.Compiler.Expression=Expression;this.Concurrent.Thread.Compiler.DotAccessor=DotAccessor;this.Concurrent.Thread.Compiler.Literal=Literal;this.Concurrent.Thread.Compiler.SimpleAssignExpression=SimpleAssignExpression;this.Concurrent.Thread.Compiler.BitXorExpression=BitXorExpression;this.Concurrent.Thread.Compiler.AddExpression=AddExpression;this.Concurrent.Thread.Compiler.GreaterThanExpression=GreaterThanExpression;this.Concurrent.Thread.Compiler.NotEqualExpression=NotEqualExpression;this.Concurrent.Thread.Compiler.PreIncExpression=PreIncExpression;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(this.Concurrent.Thread.Compiler.Token===undefined)this.Concurrent.Thread.Compiler.Token=undefined;with(function(){with(Concurrent.Thread.Compiler){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var Token={};Token.ERROR=-1;Token.EOF=0;Token.EOL=1;Token.FIRST_BYTECODE_TOKEN=2;Token.ENTERWITH=2;Token.LEAVEWITH=3;Token.RETURN=4;Token.GOTO=5;Token.IFEQ=6;Token.IFNE=7;Token.SETNAME=8;Token.BITOR=9;Token.BITXOR=10;Token.BITAND=11;Token.EQ=12;Token.NE=13;Token.LT=14;Token.LE=15;Token.GT=16;Token.GE=17;Token.LSH=18;Token.RSH=19;Token.URSH=20;Token.ADD=21;Token.SUB=22;Token.MUL=23;Token.DIV=24;Token.MOD=25;Token.NOT=26;Token.BITNOT=27;Token.POS=28;Token.NEG=29;Token.NEW=30;Token.DELPROP=31;Token.TYPEOF=32;Token.GETPROP=33;Token.SETPROP=34;Token.GETELEM=35;Token.SETELEM=36;Token.CALL=37;Token.NAME=38;Token.NUMBER=39;Token.STRING=40;Token.NULL=41;Token.THIS=42;Token.FALSE=43;Token.TRUE=44;Token.SHEQ=45;Token.SHNE=46;Token.REGEXP=47;Token.BINDNAME=48;Token.THROW=49;Token.RETHROW=50;Token.IN=51;Token.INSTANCEOF=52;Token.LOCAL_LOAD=53;Token.GETVAR=54;Token.SETVAR=55;Token.CATCH_SCOPE=56;Token.ENUM_INIT_KEYS=57;Token.ENUM_INIT_VALUES=58;Token.ENUM_NEXT=59;Token.ENUM_ID=60;Token.THISFN=61;Token.RETURN_RESULT=62;Token.ARRAYLIT=63;Token.OBJECTLIT=64;Token.GET_REF=65;Token.SET_REF=66;Token.DEL_REF=67;Token.REF_CALL=68;Token.REF_SPECIAL=69;Token.DEFAULTNAMESPACE=70;Token.ESCXMLATTR=71;Token.ESCXMLTEXT=72;Token.REF_MEMBER=73;Token.REF_NS_MEMBER=74;Token.REF_NAME=75;Token.REF_NS_NAME=76;Token.LAST_BYTECODE_TOKEN=Token.REF_NS_NAME;Token.TRY=77;Token.SEMI=78;Token.LB=79;Token.RB=80;Token.LC=81;Token.RC=82;Token.LP=83;Token.RP=84;Token.COMMA=85;Token.ASSIGN=86;Token.ASSIGN_BITOR=87;Token.ASSIGN_BITXOR=88;Token.ASSIGN_BITAND=89;Token.ASSIGN_LSH=90;Token.ASSIGN_RSH=91;Token.ASSIGN_URSH=92;Token.ASSIGN_ADD=93;Token.ASSIGN_SUB=94;Token.ASSIGN_MUL=95;Token.ASSIGN_DIV=96;Token.ASSIGN_MOD=97;Token.FIRST_ASSIGN=Token.ASSIGN;Token.LAST_ASSIGN=Token.ASSIGN_MOD;Token.HOOK=98;Token.COLON=99;Token.OR=100;Token.AND=101;Token.INC=102;Token.DEC=103;Token.DOT=104;Token.FUNCTION=105;Token.EXPORT=106;Token.IMPORT=107;Token.IF=108;Token.ELSE=109;Token.SWITCH=110;Token.CASE=111;Token.DEFAULT=112;Token.WHILE=113;Token.DO=114;Token.FOR=115;Token.BREAK=116;Token.CONTINUE=117;Token.VAR=118;Token.WITH=119;Token.CATCH=120;Token.FINALLY=121;Token.VOID=122;Token.RESERVED=123;Token.EMPTY=124;Token.BLOCK=125;Token.LABEL=126;Token.TARGET=127;Token.LOOP=128;Token.EXPR_VOID=129;Token.EXPR_RESULT=130;Token.JSR=131;Token.SCRIPT=132;Token.TYPEOFNAME=133;Token.USE_STACK=134;Token.SETPROP_OP=135;Token.SETELEM_OP=136;Token.LOCAL_BLOCK=137;Token.SET_REF_OP=138;Token.DOTDOT=139;Token.COLONCOLON=140;Token.XML=141;Token.DOTQUERY=142;Token.XMLATTR=143;Token.XMLEND=144;Token.TO_OBJECT=145;Token.TO_DOUBLE=146;Token.LAST_TOKEN=146;Token.name=function(token)
{if(!Kit.printTrees)return String(token);with(Token){switch(token){case ERROR:return"ERROR";case EOF:return"EOF";case EOL:return"EOL";case ENTERWITH:return"ENTERWITH";case LEAVEWITH:return"LEAVEWITH";case RETURN:return"RETURN";case GOTO:return"GOTO";case IFEQ:return"IFEQ";case IFNE:return"IFNE";case SETNAME:return"SETNAME";case BITOR:return"BITOR";case BITXOR:return"BITXOR";case BITAND:return"BITAND";case EQ:return"EQ";case NE:return"NE";case LT:return"LT";case LE:return"LE";case GT:return"GT";case GE:return"GE";case LSH:return"LSH";case RSH:return"RSH";case URSH:return"URSH";case ADD:return"ADD";case SUB:return"SUB";case MUL:return"MUL";case DIV:return"DIV";case MOD:return"MOD";case NOT:return"NOT";case BITNOT:return"BITNOT";case POS:return"POS";case NEG:return"NEG";case NEW:return"NEW";case DELPROP:return"DELPROP";case TYPEOF:return"TYPEOF";case GETPROP:return"GETPROP";case SETPROP:return"SETPROP";case GETELEM:return"GETELEM";case SETELEM:return"SETELEM";case CALL:return"CALL";case NAME:return"NAME";case NUMBER:return"NUMBER";case STRING:return"STRING";case NULL:return"NULL";case THIS:return"THIS";case FALSE:return"FALSE";case TRUE:return"TRUE";case SHEQ:return"SHEQ";case SHNE:return"SHNE";case REGEXP:return"OBJECT";case BINDNAME:return"BINDNAME";case THROW:return"THROW";case RETHROW:return"RETHROW";case IN:return"IN";case INSTANCEOF:return"INSTANCEOF";case LOCAL_LOAD:return"LOCAL_LOAD";case GETVAR:return"GETVAR";case SETVAR:return"SETVAR";case CATCH_SCOPE:return"CATCH_SCOPE";case ENUM_INIT_KEYS:return"ENUM_INIT_KEYS";case ENUM_INIT_VALUES:return"ENUM_INIT_VALUES";case ENUM_NEXT:return"ENUM_NEXT";case ENUM_ID:return"ENUM_ID";case THISFN:return"THISFN";case RETURN_RESULT:return"RETURN_RESULT";case ARRAYLIT:return"ARRAYLIT";case OBJECTLIT:return"OBJECTLIT";case GET_REF:return"GET_REF";case SET_REF:return"SET_REF";case DEL_REF:return"DEL_REF";case REF_CALL:return"REF_CALL";case REF_SPECIAL:return"REF_SPECIAL";case DEFAULTNAMESPACE:return"DEFAULTNAMESPACE";case ESCXMLTEXT:return"ESCXMLTEXT";case ESCXMLATTR:return"ESCXMLATTR";case REF_MEMBER:return"REF_MEMBER";case REF_NS_MEMBER:return"REF_NS_MEMBER";case REF_NAME:return"REF_NAME";case REF_NS_NAME:return"REF_NS_NAME";case TRY:return"TRY";case SEMI:return"SEMI";case LB:return"LB";case RB:return"RB";case LC:return"LC";case RC:return"RC";case LP:return"LP";case RP:return"RP";case COMMA:return"COMMA";case ASSIGN:return"ASSIGN";case ASSIGN_BITOR:return"ASSIGN_BITOR";case ASSIGN_BITXOR:return"ASSIGN_BITXOR";case ASSIGN_BITAND:return"ASSIGN_BITAND";case ASSIGN_LSH:return"ASSIGN_LSH";case ASSIGN_RSH:return"ASSIGN_RSH";case ASSIGN_URSH:return"ASSIGN_URSH";case ASSIGN_ADD:return"ASSIGN_ADD";case ASSIGN_SUB:return"ASSIGN_SUB";case ASSIGN_MUL:return"ASSIGN_MUL";case ASSIGN_DIV:return"ASSIGN_DIV";case ASSIGN_MOD:return"ASSIGN_MOD";case HOOK:return"HOOK";case COLON:return"COLON";case OR:return"OR";case AND:return"AND";case INC:return"INC";case DEC:return"DEC";case DOT:return"DOT";case FUNCTION:return"FUNCTION";case EXPORT:return"EXPORT";case IMPORT:return"IMPORT";case IF:return"IF";case ELSE:return"ELSE";case SWITCH:return"SWITCH";case CASE:return"CASE";case DEFAULT:return"DEFAULT";case WHILE:return"WHILE";case DO:return"DO";case FOR:return"FOR";case BREAK:return"BREAK";case CONTINUE:return"CONTINUE";case VAR:return"VAR";case WITH:return"WITH";case CATCH:return"CATCH";case FINALLY:return"FINALLY";case RESERVED:return"RESERVED";case EMPTY:return"EMPTY";case BLOCK:return"BLOCK";case LABEL:return"LABEL";case TARGET:return"TARGET";case LOOP:return"LOOP";case EXPR_VOID:return"EXPR_VOID";case EXPR_RESULT:return"EXPR_RESULT";case JSR:return"JSR";case SCRIPT:return"SCRIPT";case TYPEOFNAME:return"TYPEOFNAME";case USE_STACK:return"USE_STACK";case SETPROP_OP:return"SETPROP_OP";case SETELEM_OP:return"SETELEM_OP";case LOCAL_BLOCK:return"LOCAL_BLOCK";case SET_REF_OP:return"SET_REF_OP";case DOTDOT:return"DOTDOT";case COLONCOLON:return"COLONCOLON";case XML:return"XML";case DOTQUERY:return"DOTQUERY";case XMLATTR:return"XMLATTR";case XMLEND:return"XMLEND";case TO_OBJECT:return"TO_OBJECT";case TO_DOUBLE:return"TO_DOUBLE";}}
Kit.codeBug(token);};return{Token:Token};}();}}.call(null)){this.Concurrent.Thread.Compiler.Token=Token;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.Statement===undefined)this.Concurrent.Thread.Compiler.Statement=undefined;if(this.Concurrent.Thread.Compiler.EmptyStatement===undefined)this.Concurrent.Thread.Compiler.EmptyStatement=undefined;if(this.Concurrent.Thread.Compiler.Block===undefined)this.Concurrent.Thread.Compiler.Block=undefined;if(this.Concurrent.Thread.Compiler.ExpStatement===undefined)this.Concurrent.Thread.Compiler.ExpStatement=undefined;if(this.Concurrent.Thread.Compiler.VarStatement===undefined)this.Concurrent.Thread.Compiler.VarStatement=undefined;if(this.Concurrent.Thread.Compiler.IfStatement===undefined)this.Concurrent.Thread.Compiler.IfStatement=undefined;if(this.Concurrent.Thread.Compiler.IfElseStatement===undefined)this.Concurrent.Thread.Compiler.IfElseStatement=undefined;if(this.Concurrent.Thread.Compiler.DoWhileStatement===undefined)this.Concurrent.Thread.Compiler.DoWhileStatement=undefined;if(this.Concurrent.Thread.Compiler.WhileStatement===undefined)this.Concurrent.Thread.Compiler.WhileStatement=undefined;if(this.Concurrent.Thread.Compiler.ForStatement===undefined)this.Concurrent.Thread.Compiler.ForStatement=undefined;if(this.Concurrent.Thread.Compiler.ForVarStatement===undefined)this.Concurrent.Thread.Compiler.ForVarStatement=undefined;if(this.Concurrent.Thread.Compiler.ForInStatement===undefined)this.Concurrent.Thread.Compiler.ForInStatement=undefined;if(this.Concurrent.Thread.Compiler.ForInVarStatement===undefined)this.Concurrent.Thread.Compiler.ForInVarStatement=undefined;if(this.Concurrent.Thread.Compiler.ForEachStatement===undefined)this.Concurrent.Thread.Compiler.ForEachStatement=undefined;if(this.Concurrent.Thread.Compiler.ForEachVarStatement===undefined)this.Concurrent.Thread.Compiler.ForEachVarStatement=undefined;if(this.Concurrent.Thread.Compiler.ContinueStatement===undefined)this.Concurrent.Thread.Compiler.ContinueStatement=undefined;if(this.Concurrent.Thread.Compiler.BreakStatement===undefined)this.Concurrent.Thread.Compiler.BreakStatement=undefined;if(this.Concurrent.Thread.Compiler.ReturnStatement===undefined)this.Concurrent.Thread.Compiler.ReturnStatement=undefined;if(this.Concurrent.Thread.Compiler.WithStatement===undefined)this.Concurrent.Thread.Compiler.WithStatement=undefined;if(this.Concurrent.Thread.Compiler.SwitchStatement===undefined)this.Concurrent.Thread.Compiler.SwitchStatement=undefined;if(this.Concurrent.Thread.Compiler.CaseClause===undefined)this.Concurrent.Thread.Compiler.CaseClause=undefined;if(this.Concurrent.Thread.Compiler.DefaultClause===undefined)this.Concurrent.Thread.Compiler.DefaultClause=undefined;if(this.Concurrent.Thread.Compiler.ThrowStatement===undefined)this.Concurrent.Thread.Compiler.ThrowStatement=undefined;if(this.Concurrent.Thread.Compiler.TryCatchStatement===undefined)this.Concurrent.Thread.Compiler.TryCatchStatement=undefined;if(this.Concurrent.Thread.Compiler.TryFinallyStatement===undefined)this.Concurrent.Thread.Compiler.TryFinallyStatement=undefined;if(this.Concurrent.Thread.Compiler.TryCatchFinallyStatement===undefined)this.Concurrent.Thread.Compiler.TryCatchFinallyStatement=undefined;if(this.Concurrent.Thread.Compiler.TryCatchListStatement===undefined)this.Concurrent.Thread.Compiler.TryCatchListStatement=undefined;if(this.Concurrent.Thread.Compiler.TryCatchListFinallyStatement===undefined)this.Concurrent.Thread.Compiler.TryCatchListFinallyStatement=undefined;if(this.Concurrent.Thread.Compiler.CatchGuard===undefined)this.Concurrent.Thread.Compiler.CatchGuard=undefined;if(this.Concurrent.Thread.Compiler.FunctionDeclaration===undefined)this.Concurrent.Thread.Compiler.FunctionDeclaration=undefined;with(function(){with(Data.Cons){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';function Statement(labels,lineno,source){this.labels=labels;this.lineno=lineno;this.source=source;}
Statement.prototype.toString=function(){Kit.codeBug();};function labelsToString(){var buf=[];for(var i=0;i<this.labels.length;i++){buf.push(this.labels[i],": ");}
return buf.join("");}
function EmptyStatement(labels,lineno,source){Statement.call(this,labels,lineno,source);}
var proto=EmptyStatement.prototype=new Statement();proto.constructor=EmptyStatement;proto.toString=function(){return labelsToString.call(this)+";";};function Block(labels,body,lineno,source){Statement.call(this,labels,lineno,source);this.body=body;}
var proto=Block.prototype=new Statement();proto.constructor=Block;proto.toString=function(){var buf=[labelsToString.call(this),"{"];this.body.forEach(function(it){buf.push(it);});buf.push("}");return buf.join("\n");};function ExpStatement(labels,exp,lineno,source){Statement.call(this,labels,lineno,source);this.exp=exp;}
var proto=ExpStatement.prototype=new Statement();proto.constructor=ExpStatement;proto.toString=function(){return labelsToString.call(this)+String(this.exp)+";";};proto.containsFunctionCall=function(){return this.exp.containsFunctionCall();};function VarStatement(labels,decls,lineno,source){Statement.call(this,labels,lineno,source);this.decls=decls;}
var proto=VarStatement.prototype=new Statement();proto.constructor=VarStatement;proto.toString=function(){var buf=[];for(var i=0;i<this.decls.length;i++){if(this.decls[i].exp){buf.push([this.decls[i].id,"=",this.decls[i].exp].join(""));}
else{buf.push(this.decls[i].id);}}
return[labelsToString.call(this),"var ",buf.join(", "),";",].join("");};proto.containsFunctionCall=function(){for(var i=0;i<this.decls.length;i++){if(this.decls[i].exp&&this.decls[i].exp.containsFunctionCall()){return true;}}
return false;};function IfStatement(labels,cond,body,lineno,source){Statement.call(this,labels,lineno,source);this.cond=cond;this.body=body;}
var proto=IfStatement.prototype=new Statement();proto.constructor=IfStatement;proto.toString=function(){return[labelsToString.call(this),"if (",this.cond,") ",this.body].join("");};function IfElseStatement(labels,cond,tbody,fbody,lineno,source){Statement.call(this,labels,lineno,source);this.cond=cond;this.tbody=tbody;this.fbody=fbody;}
var proto=IfElseStatement.prototype=new Statement();proto.constructor=IfElseStatement;proto.toString=function(){return[labelsToString.call(this),"if (",this.cond,") ",this.tbody,"\n","else ",this.fbody].join("");};function DoWhileStatement(labels,body,cond,lineno,source){Statement.call(this,labels,lineno,source);this.body=body;this.cond=cond;}
var proto=DoWhileStatement.prototype=new Statement();proto.constructor=DoWhileStatement;proto.toString=function(){return[labelsToString.call(this),"do ",this.body," while (",this.cond,");"].join("");};function WhileStatement(labels,cond,body,lineno,source){Statement.call(this,labels,lineno,source);this.cond=cond;this.body=body;}
var proto=WhileStatement.prototype=new Statement();proto.constructor=WhileStatement;proto.toString=function(){return[labelsToString.call(this),"while (",this.cond,") ",this.body].join("");};function ForStatement(labels,init,cond,incr,body,lineno,source){Statement.call(this,labels,lineno,source);this.init=init;this.cond=cond;this.incr=incr;this.body=body;}
var proto=ForStatement.prototype=new Statement();proto.constructor=ForStatement;proto.toString=function(){return[labelsToString.call(this),"for (",this.init?this.init:"","; ",this.cond?this.cond:"","; ",this.incr?this.incr:"",") ",this.body].join("");};function ForVarStatement(labels,decls,cond,incr,body,lineno,source){Statement.call(this,labels,lineno,source);this.decls=decls;this.cond=cond;this.incr=incr;this.body=body;}
var proto=ForVarStatement.prototype=new Statement();proto.constructor=ForVarStatement;proto.toString=function(){return[labelsToString.call(this),"for (",(this.decls.length?new VarStatement([],this.decls):";")," ",this.cond?this.cond:"","; ",this.incr?this.incr:"",") ",this.body].join("");};function ForInStatement(labels,lhs,exp,body,lineno,source){Statement.call(this,labels,lineno,source);this.lhs=lhs;this.exp=exp;this.body=body;}
var proto=ForInStatement.prototype=new Statement();proto.constructor=ForInStatement;proto.toString=function(){return[labelsToString.call(this),"for (",this.lhs," in ",this.exp,") ",this.body].join("");};function ForInVarStatement(labels,decl,exp,body,lineno,source){Statement.call(this,labels,lineno,source);this.decl=decl;this.exp=exp;this.body=body;}
var proto=ForInVarStatement.prototype=new Statement();proto.constructor=ForInVarStatement;proto.toString=function(){return[labelsToString.call(this),"for ( var ",this.decl.exp?String(this.decl.id)+"="+String(this.decl.exp):String(this.decl.id)," in ",this.exp,") ",this.body].join("");};function ForEachStatement(labels,lhs,exp,body,lineno,source){Statement.call(this,labels,lineno,source);this.lhs=lhs;this.exp=exp;this.body=body;}
var proto=ForEachStatement.prototype=new Statement();proto.constructor=ForEachStatement;proto.toString=function(){return[labelsToString.call(this),"for each (",this.lhs," in ",this.exp,") ",this.body].join("");};function ForEachVarStatement(labels,decl,exp,body,lineno,source){Statement.call(this,labels,lineno,source);this.decl=decl;this.exp=exp;this.body=body;}
var proto=ForEachVarStatement.prototype=new Statement();proto.constructor=ForEachVarStatement;proto.toString=function(){return[labelsToString.call(this),"for each ( var ",this.decl.exp?String(this.decl.id)+"="+String(this.decl.exp):String(this.decl.id)," in ",this.exp,") ",this.body].join("");};function ContinueStatement(labels,target,lineno,source){Statement.call(this,labels,lineno,source);this.target=target;}
var proto=ContinueStatement.prototype=new Statement();proto.constructor=ContinueStatement;proto.toString=function(){var buf=[labelsToString.call(this),"continue"];if(this.target)buf.push(" ",this.target);buf.push(";");return buf.join("");};function BreakStatement(labels,target,lineno,source){Statement.call(this,labels,lineno,source);this.target=target;}
var proto=BreakStatement.prototype=new Statement();proto.constructor=BreakStatement;proto.toString=function(){var buf=[labelsToString.call(this),"break"];if(this.target)buf.push(" ",this.target);buf.push(";");return buf.join("");};function ReturnStatement(labels,exp,lineno,source){Statement.call(this,labels,lineno,source);this.exp=exp;}
var proto=ReturnStatement.prototype=new Statement();proto.constructor=ReturnStatement;proto.toString=function(){return[labelsToString.call(this),"return ",this.exp?this.exp:"",";"].join("");};function WithStatement(labels,exp,body,lineno,source){Statement.call(this,labels,lineno,source);this.exp=exp;this.body=body;}
var proto=WithStatement.prototype=new Statement();proto.constructor=WithStatement;proto.toString=function(){return["with (",this.exp,") ",this.body].join("");};function SwitchStatement(labels,exp,clauses,lineno,source){Statement.call(this,labels,lineno,source);this.exp=exp;this.clauses=clauses;}
var proto=SwitchStatement.prototype=new Statement();proto.constructor=SwitchStatement;proto.toString=function(){var buf=["switch ( ",this.exp,") {\n"];this.clauses.forEach(function(it){buf.push(it,"\n");});buf.push("}");return buf.join("");};function CaseClause(exp,body,lineno,source){this.exp=exp;this.body=body;this.lineno=lineno;this.source=source;}
CaseClause.prototype.toString=function(){var buf=["case ",this.exp,":\n"];this.body.forEach(function(it){buf.push(it,"\n");});return buf.join("");};function DefaultClause(body,lineno,source){this.body=body;this.lineno=lineno;this.source=source;}
DefaultClause.prototype.toString=function(){var buf=["default:\n"];this.body.forEach(function(it){buf.push(it,"\n");});return buf.join("");};function ThrowStatement(labels,exp,lineno,source){Statement.call(this,labels,lineno,source);this.exp=exp;}
var proto=ThrowStatement.prototype=new Statement();proto.constructor=ThrowStatement;proto.toString=function(){return[labelsToString.call(this),"throw ",this.exp,";"].join("");};function TryCatchStatement(labels,tryBlock,variable,catchBlock,lineno,source){Statement.call(this,labels,lineno,source);this.tryBlock=tryBlock;this.variable=variable;this.catchBlock=catchBlock;}
var proto=TryCatchStatement.prototype=new Statement();proto.constructor=TryCatchStatement;proto.toString=function(){return[labelsToString.call(this),"try ",this.tryBlock,"\n","catch (",this.variable,") ",this.catchBlock].join("");};function TryFinallyStatement(labels,tryBlock,finallyBlock,lineno,source){Statement.call(this,labels,lineno,source);this.tryBlock=tryBlock;this.finallyBlock=finallyBlock;}
var proto=TryFinallyStatement.prototype=new Statement();proto.constructor=TryFinallyStatement;proto.toString=function(){return[labelsToString.call(this),"try ",this.tryBlock,"\n","finally ",this.finallyBlock].join("");};function TryCatchFinallyStatement(labels,tryBlock,variable,catchBlock,finallyBlock,lineno,source){Statement.call(this,labels,lineno,source);this.tryBlock=tryBlock;this.variable=variable;this.catchBlock=catchBlock;this.finallyBlock=finallyBlock;}
var proto=TryCatchFinallyStatement.prototype=new Statement();proto.constructor=TryCatchFinallyStatement;proto.toString=function(){return[labelsToString.call(this),"try ",this.tryBlock,"\n","catch (",this.variable,") ",this.catchBlock,"\n","finally ",this.finallyBlock].join("");};function TryCatchListStatement(labels,tryBlock,catchList,lineno,source){Statement.call(this,labels,lineno,source);this.tryBlock=tryBlock;this.catchList=catchList;}
var proto=TryCatchListStatement.prototype=new Statement();proto.constructor=TryCatchListStatement;proto.toString=function(){var buf=[labelsToString.call(this),"try ",this.tryBlock,"\n"];this.catchList.forEach(function(it){buf.push(it);});return buf.join("");};function TryCatchListFinallyStatement(labels,tryBlock,catchList,finallyBlock,lineno,source){Statement.call(this,labels,lineno,source);this.tryBlock=tryBlock;this.catchList=catchList;this.finallyBlock=finallyBlock;}
var proto=TryCatchListFinallyStatement.prototype=new Statement();proto.constructor=TryCatchListFinallyStatement;proto.toString=function(){var buf=[labelsToString.call(this),"try ",this.tryBlock,"\n"];this.catchList.forEach(function(it){buf.push(it);});buf.push("finally ",this.finallyBlock);return buf.join("");};function CatchGuard(variable,cond,block,lineno,source){this.variable=variable;this.cond=cond;this.block=block;this.lineno=lineno;this.source=source;}
CatchGuard.prototype.toString=function(){var buf=["catch ( ",this.variable];if(this.cond)buf.push(" if ",this.cond);buf.push(" )",this.block);return buf.join("");};function FunctionDeclaration(labels,name,params,body,lineno,source){Statement.call(this,labels,lineno,source);this.name=name;this.params=params;this.body=body;}
var proto=FunctionDeclaration.prototype=new Statement();proto.constructor=FunctionDeclaration;proto.toString=function(){var buf=["function ",this.name," (",this.params.join(", "),") {\n"];this.body.forEach(function(it){buf.push(it,"\n");});buf.push("}");return buf.join("");};return{CatchGuard:CatchGuard,Block:Block,IfStatement:IfStatement,FunctionDeclaration:FunctionDeclaration,ForVarStatement:ForVarStatement,IfElseStatement:IfElseStatement,TryFinallyStatement:TryFinallyStatement,TryCatchFinallyStatement:TryCatchFinallyStatement,ThrowStatement:ThrowStatement,ForEachStatement:ForEachStatement,EmptyStatement:EmptyStatement,TryCatchStatement:TryCatchStatement,WithStatement:WithStatement,ExpStatement:ExpStatement,ReturnStatement:ReturnStatement,Statement:Statement,ForInVarStatement:ForInVarStatement,BreakStatement:BreakStatement,TryCatchListStatement:TryCatchListStatement,DoWhileStatement:DoWhileStatement,ForInStatement:ForInStatement,DefaultClause:DefaultClause,VarStatement:VarStatement,ContinueStatement:ContinueStatement,TryCatchListFinallyStatement:TryCatchListFinallyStatement,WhileStatement:WhileStatement,SwitchStatement:SwitchStatement,ForEachVarStatement:ForEachVarStatement,CaseClause:CaseClause,ForStatement:ForStatement};}();}}}.call(null)){this.Concurrent.Thread.Compiler.CatchGuard=CatchGuard;this.Concurrent.Thread.Compiler.Block=Block;this.Concurrent.Thread.Compiler.IfStatement=IfStatement;this.Concurrent.Thread.Compiler.FunctionDeclaration=FunctionDeclaration;this.Concurrent.Thread.Compiler.ForVarStatement=ForVarStatement;this.Concurrent.Thread.Compiler.IfElseStatement=IfElseStatement;this.Concurrent.Thread.Compiler.TryFinallyStatement=TryFinallyStatement;this.Concurrent.Thread.Compiler.TryCatchFinallyStatement=TryCatchFinallyStatement;this.Concurrent.Thread.Compiler.ThrowStatement=ThrowStatement;this.Concurrent.Thread.Compiler.ForEachStatement=ForEachStatement;this.Concurrent.Thread.Compiler.EmptyStatement=EmptyStatement;this.Concurrent.Thread.Compiler.TryCatchStatement=TryCatchStatement;this.Concurrent.Thread.Compiler.WithStatement=WithStatement;this.Concurrent.Thread.Compiler.ExpStatement=ExpStatement;this.Concurrent.Thread.Compiler.ReturnStatement=ReturnStatement;this.Concurrent.Thread.Compiler.Statement=Statement;this.Concurrent.Thread.Compiler.ForInVarStatement=ForInVarStatement;this.Concurrent.Thread.Compiler.BreakStatement=BreakStatement;this.Concurrent.Thread.Compiler.TryCatchListStatement=TryCatchListStatement;this.Concurrent.Thread.Compiler.DoWhileStatement=DoWhileStatement;this.Concurrent.Thread.Compiler.ForInStatement=ForInStatement;this.Concurrent.Thread.Compiler.DefaultClause=DefaultClause;this.Concurrent.Thread.Compiler.VarStatement=VarStatement;this.Concurrent.Thread.Compiler.ContinueStatement=ContinueStatement;this.Concurrent.Thread.Compiler.TryCatchListFinallyStatement=TryCatchListFinallyStatement;this.Concurrent.Thread.Compiler.WhileStatement=WhileStatement;this.Concurrent.Thread.Compiler.SwitchStatement=SwitchStatement;this.Concurrent.Thread.Compiler.ForEachVarStatement=ForEachVarStatement;this.Concurrent.Thread.Compiler.CaseClause=CaseClause;this.Concurrent.Thread.Compiler.ForStatement=ForStatement;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(this.Concurrent.Thread.Compiler.IdentifierMap===undefined)this.Concurrent.Thread.Compiler.IdentifierMap=undefined;with(function(){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var hasOwnProperty=Object.prototype.hasOwnProperty;function IdentifierMap(){this._map={};}
var proto=IdentifierMap.prototype;proto.clone=function clone(){var c=new IdentifierMap();for(var i in this._map){if(hasOwnProperty.call(this._map,i))c._map[i]=this._map[i];}
return c;};proto.exists=function(){for(var i=0;i<arguments.length;i++){var key=arguments[i];if(!(key instanceof Identifier))throw new TypeError("arguments["+i+"] is not of type Identifier");if(!hasOwnProperty.call(this._map,key.valueOf()))return false;}
return true;};proto.get=function(k){if(!(k instanceof Identifier))throw new TypeError("arguments[0] is not of type Identifier");var s=k.valueOf();if(!hasOwnProperty.call(this._map,s))return undefined;return this._map[s].value;};proto.put=function(k,v){if(!(k instanceof Identifier))throw new TypeError("arguments[0] is not of type Identifier");this._map[k.valueOf()]={id:k,value:v};};proto.remove=function(k){if(!(k instanceof Identifier))throw new TypeError("arguments[0] is not of type Identifier");return delete this._map[k.valueOf()];};proto.keys=function(){var set=new IdentifierSet();for(var i in this._map){if(hasOwnProperty.call(this._map,i))set.add(this._map[i].id);}
return set;};proto.values=function(){var vals=[];for(var i in this._map){if(hasOwnProperty.call(this._map,i))vals.push(this._map[i].value);}
return vals;};return{IdentifierMap:IdentifierMap};}();}}.call(null)){this.Concurrent.Thread.Compiler.IdentifierMap=IdentifierMap;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(this.Concurrent.Thread.Compiler.TokenStream===undefined)this.Concurrent.Thread.Compiler.TokenStream=undefined;with(function(){with(Concurrent.Thread.Compiler){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var EOF_CHAR=String.fromCharCode(0xFFFF);function TokenStream(parser,sourceString,lineno)
{this.parser=parser;this.sourceString=String(sourceString);this.sourceEnd=this.sourceString.length;this.sourceCursor=0;this.dirtyLine=false;this.string="";this.stringBuffer=[];this.ungetBuffer=[];this.hitEOF=false;this.lineStart=0;this.lineno=Number(lineno)||1;this.lineEndChar=undefined;this.xmlIsAttribute=false;this.xmlIsTagContent=false;this.xmlOpenTagsCount=0;}
var proto=TokenStream.prototype;proto.tokenToString=function(token)
{if(Token.printTrees){var name=Token.name(token);switch(token){case Token.STRING:case Token.REGEXP:case Token.NAME:return name+" `"+this.string+"'";case Token.NUMBER:return"NUMBER "+this.number;}
return name;}
return"";};function isKeyword(s)
{return Token.EOF!=stringToKeyword(s);}
var strIdMap={"break":Token.BREAK,"case":Token.CASE,"catch":Token.CATCH,"continue":Token.CONTINUE,"default":Token.DEFAULT,"delete":Token.DELPROP,"do":Token.DO,"else":Token.ELSE,"export":Token.EXPORT,"false":Token.FALSE,"finally":Token.FINALLY,"for":Token.FOR,"function":Token.FUNCTION,"if":Token.IF,"in":Token.IN,"instanceof":Token.INSTANCEOF,"new":Token.NEW,"null":Token.NULL,"return":Token.RETURN,"switch":Token.SWITCH,"this":Token.THIS,"throw":Token.THROW,"true":Token.TRUE,"try":Token.TRY,"typeof":Token.TYPEOF,"var":Token.VAR,"void":Token.VOID,"while":Token.WHILE,"with":Token.WITH,"abstract":Token.RESERVED,"boolean":Token.RESERVED,"byte":Token.RESERVED,"char":Token.RESERVED,"class":Token.RESERVED,"const":Token.RESERVED,"debugger":Token.RESERVED,"double":Token.RESERVED,"enum":Token.RESERVED,"extends":Token.RESERVED,"final":Token.RESERVED,"float":Token.RESERVED,"goto":Token.RESERVED,"implements":Token.RESERVED,"import":Token.IMPORT,"int":Token.RESERVED,"interface":Token.RESERVED,"long":Token.RESERVED,"native":Token.RESERVED,"package":Token.RESERVED,"private":Token.RESERVED,"protected":Token.RESERVED,"public":Token.RESERVED,"short":Token.RESERVED,"static":Token.RESERVED,"super":Token.RESERVED,"synchronized":Token.RESERVED,"throws":Token.RESERVED,"transient":Token.RESERVED,"volatile":Token.RESERVED};function stringToKeyword(name)
{return strIdMap.hasOwnProperty(name)?strIdMap[name]:Token.EOF;}
proto.getLineno=function(){return this.lineno;};proto.getString=function(){return this.string;};proto.eof=function(){return this.hitEOF;};proto.getToken=function()
{var c;retry:for(;;){for(;;){c=this.getChar();if(c===EOF_CHAR){return Token.EOF;}else if(c==='\n'){this.dirtyLine=false;return Token.EOL;}else if(!isSpace(c)){if(c!=='-'){this.dirtyLine=true;}
break;}}
var identifierStart=false;var isUnicodeEscapeStart=false;if(c==='\\'){c=this.getChar();if(c==='u'){identifierStart=true;isUnicodeEscapeStart=true;this.stringBuffer=["\\u"];}else{identifierStart=false;this.ungetChar(c);c='\\';}}else if(isIdentifierStart(c)){identifierStart=true;this.stringBuffer=[c];}
if(identifierStart){var containsEscape=isUnicodeEscapeStart;for(;;){if(isUnicodeEscapeStart){for(var i=0;i!=4;++i){c=this.getChar();if(isHexDigit(c)){this.addToString(c);}else{this.parser.addError("msg.invalid.escape");return Token.ERROR;}}
isUnicodeEscapeStart=false;}else{c=this.getChar();if(c=='\\'){c=this.getChar();if(c=='u'){this.addToString("\\u");isUnicodeEscapeStart=true;containsEscape=true;}else{this.parser.addError("msg.illegal.character");return Token.ERROR;}}else{if(!isIdentifierPart(c))break;this.addToString(c);}}}
this.ungetChar(c);var str=this.getStringFromBuffer();if(!containsEscape){var result=stringToKeyword(str);if(result!=Token.EOF)return result;}
this.string=str;return Token.NAME;}
if(isDigit(c)||(c==='.'&&isDigit(this.peekChar()))){this.stringBuffer=[];var base=10;if(c==='0'){this.addToString('0');c=this.getChar();if(c==='x'||c==='X'){this.addToString(c);base=16;c=this.getChar();}else if(isDigit(c)){base=8;}}
if(base===16){while(isHexDigit(c)){this.addToString(c);c=this.getChar();}}else{while(isDigit(c)){if(base===8&&(c==='8'||c==='9')){this.parser.addWarning("msg.bad.octal.literal",c=='8'?"8":"9");base=10;}
this.addToString(c);c=this.getChar();}}
if(base===10){if(c==='.'){do{this.addToString(c);c=this.getChar();}while(isDigit(c));}
if(c==='e'||c==='E'){this.addToString(c);c=this.getChar();if(c==='+'||c==='-'){this.addToString(c);c=this.getChar();}
if(!isDigit(c)){this.parser.addError("msg.missing.exponent");return Token.ERROR;}
do{this.addToString(c);c=this.getChar();}while(isDigit(c));}}
this.ungetChar(c);this.string=this.getStringFromBuffer();return Token.NUMBER;}
if(c==='"'||c==="'"){var quoteChar=c;this.stringBuffer=[c];c=this.getChar();while(c!==quoteChar){if(c==='\n'||c===EOF_CHAR){this.ungetChar(c);this.parser.addError("msg.unterminated.string.lit");return Token.ERROR;}
if(c==='\\'){this.addToString('\\');c=this.getChar();if(c==='\n'){this.parser.addWarning("msg.unsafe.string.lit");}else{this.addToString(c);}}else{this.addToString(c);}
c=this.getChar();}
this.addToString(quoteChar);this.string=this.getStringFromBuffer();return Token.STRING;}
switch(c.charCodeAt(0)){case 0x3B:return Token.SEMI;case 0x5B:return Token.LB;case 0x5D:return Token.RB;case 0x7B:return Token.LC;case 0x7D:return Token.RC;case 0x28:return Token.LP;case 0x29:return Token.RP;case 0x2C:return Token.COMMA;case 0x3F:return Token.HOOK;case 0x40:return Token.XMLATTR;case 0x3A:if(this.matchChar(':')){return Token.COLONCOLON;}else{return Token.COLON;}
case 0x2E:if(this.matchChar('.')){return Token.DOTDOT;}else if(this.matchChar('(')){return Token.DOTQUERY;}else{return Token.DOT;}
case 0x7C:if(this.matchChar('|')){return Token.OR;}else if(this.matchChar('=')){return Token.ASSIGN_BITOR;}else{return Token.BITOR;}
case 0x5E:if(this.matchChar('=')){return Token.ASSIGN_BITXOR;}else{return Token.BITXOR;}
case 0x26:if(this.matchChar('&')){return Token.AND;}else if(this.matchChar('=')){return Token.ASSIGN_BITAND;}else{return Token.BITAND;}
case 0x3D:if(this.matchChar('=')){if(this.matchChar('=')){return Token.SHEQ;}else{return Token.EQ;}}else{return Token.ASSIGN;}
case 0x21:if(this.matchChar('=')){if(this.matchChar('=')){return Token.SHNE;}else{return Token.NE;}}else{return Token.NOT;}
case 0x3C:if(this.matchChar('!')){if(this.matchChar('-')){if(this.matchChar('-')){this.skipLine();continue retry;}
this.ungetChar('-');}
this.ungetChar('!');}
if(this.matchChar('<')){if(this.matchChar('=')){return Token.ASSIGN_LSH;}else{return Token.LSH;}}else{if(this.matchChar('=')){return Token.LE;}else{return Token.LT;}}
case 0x3E:if(this.matchChar('>')){if(this.matchChar('>')){if(this.matchChar('=')){return Token.ASSIGN_URSH;}else{return Token.URSH;}}else{if(this.matchChar('=')){return Token.ASSIGN_RSH;}else{return Token.RSH;}}}else{if(this.matchChar('=')){return Token.GE;}else{return Token.GT;}}
case 0x2A:if(this.matchChar('=')){return Token.ASSIGN_MUL;}else{return Token.MUL;}
case 0x2F:if(this.matchChar('/')){this.skipLine();continue retry;}else if(this.matchChar('*')){for(;;){c=this.getChar();if(c===EOF_CHAR){this.parser.addError("msg.unterminated.comment");return Token.ERROR;}else if(c==='*'){c=this.getChar();if(c==='/'){continue retry;}}}}else if(this.matchChar('=')){return Token.ASSIGN_DIV;}else{return Token.DIV;}
case 0x25:if(this.matchChar('=')){return Token.ASSIGN_MOD;}else{return Token.MOD;}
case 0x7E:return Token.BITNOT;case 0x2B:if(this.matchChar('=')){return Token.ASSIGN_ADD;}else if(this.matchChar('+')){return Token.INC;}else{return Token.ADD;}
case 0x2D:if(this.matchChar('=')){c=Token.ASSIGN_SUB;}else if(this.matchChar('-')){if(!this.dirtyLine){if(this.matchChar('>')){this.skipLine();continue retry;}}
c=Token.DEC;}else{c=Token.SUB;}
this.dirtyLine=true;return c;default:parser.addError("msg.illegal.character");return Token.ERROR;}}};proto.readRegExp=function(startToken)
{if(startToken===Token.ASSIGN_DIV){this.stringBuffer=["/="];}else if(startToken===Token.DIV){this.stringBuffer=["/"];}else{Kit.codeBug();}
var c;while((c=this.getChar())!=='/'){if(c==='\n'||c===EOF_CHAR){this.ungetChar(c);throw this.parser.reportError("msg.unterminated.re.lit");}
if(c==='\\'){this.addToString(c);c=this.getChar();}
this.addToString(c);}
this.addToString("/");while(isIdentifierPart(c=this.getChar())){this.addToString(c);}
this.ungetChar(c);this.string=this.getStringFromBuffer();}
proto.isXMLAttribute=function()
{return this.xmlIsAttribute;};proto.getFirstXMLToken=function()
{this.xmlOpenTagsCount=0;this.xmlIsAttribute=false;this.xmlIsTagContent=false;this.ungetChar('<');return this.getNextXMLToken();};proto.getNextXMLToken=function()
{this.stringBuffer=[];for(var c=this.getChar();c!==EOF_CHAR;c=this.getChar()){if(this.xmlIsTagContent){switch(c.charCodeAt(0)){case 0x3E:this.addToString('>');this.xmlIsTagContent=false;this.xmlIsAttribute=false;break;case 0x2F:this.addToString('/');if(this.matchChar('>')){this.addToString('>');this.xmlIsTagContent=false;this.xmlOpenTagsCount--;}
break;case 0x7B:this.ungetChar('{');this.string=this.getStringFromBuffer();return Token.XML;case 0x27:case 0x22:this.addToString(c);if(!this.readQuotedString(c))return Token.ERROR;break;case 0x3D:this.addToString('=');this.xmlIsAttribute=true;break;case 0x20:case 0x09:case 0x0A:this.addToString(c);break;default:this.addToString(c);this.xmlIsAttribute=false;break;}
if(!this.xmlIsTagContent&&this.xmlOpenTagsCount===0){this.string=this.getStringFromBuffer();return Token.XMLEND;}}else{switch(c.charCodeAt(0)){case 0x3C:this.addToString('<');c=this.getChar();switch(c.charCodeAt(0)){case 0x21:this.addToString('!');c=this.getChar();switch(c.charCodeAt(0)){case 0x2D:if(this.getChar()==='-'){this.addToString('--');if(!this.readXmlComment())return Token.ERROR;}else{this.parser.addError("msg.XML.bad.form");return Token.ERROR;}
break;case 0x5B:if(this.getChar()==='C'&&this.getChar()==='D'&&this.getChar()==='A'&&this.getChar()==='T'&&this.getChar()==='A'&&this.getChar()==='[')
{this.addToString('[CDATA[');if(!this.readCDATA())return Token.ERROR;}else{this.parser.addError("msg.XML.bad.form");return Token.ERROR;}
break;default:this.ungetChar(c);if(!this.readEntity())return Token.ERROR;break;}
break;case 0x3F:this.addToString('?');if(!this.readPI())return Token.ERROR;break;case 0x2F:this.addToString('/');if(this.xmlOpenTagsCount===0){this.parser.addError("msg.XML.bad.form");return Token.ERROR;}
this.xmlIsTagContent=true;this.xmlOpenTagsCount--;break;default:this.ungetChar(c);this.xmlIsTagContent=true;this.xmlOpenTagsCount++;break;}
break;case 0x7B:this.ungetChar('{');this.string=this.getStringFromBuffer();return Token.XML;default:this.addToString(c);break;}}}
this.parser.addError("msg.XML.bad.form");return Token.ERROR;};proto.readQuotedString=function(quote)
{for(var c=this.getChar();c!==EOF_CHAR;c=this.getChar()){this.addToString(c);if(c===quote)return true;}
parser.addError("msg.XML.bad.form");return false;};proto.readXmlComment=function()
{for(var c=this.getChar();c!==EOF_CHAR;){this.addToString(c);if(c==='-'&&this.matchChar('-')){this.addToString('-');if(this.matchChar('>')){this.addToString('>');return true;}else{c='-';continue;}}
c=this.getChar();}
this.parser.addError("msg.XML.bad.form");return false;};proto.readCDATA=function()
{for(var c=this.getChar();c!==EOF_CHAR;){this.addToString(c);if(c===']'&&this.matchChar(']')){this.addToString(']');if(this.matchChar('>')){this.addToString('>');return true;}else{c=']';continue;}}
c=this.getChar();}
this.parser.addError("msg.XML.bad.form");return false;};proto.readEntity=function()
{var declTags=1;for(var c=this.getChar();c!==EOF_CHAR;c=this.getChar()){this.addToString(c);switch(c){case'<':declTags++;break;case'>':declTags--;if(declTags===0)return true;break;}}
this.parser.addError("msg.XML.bad.form");return false;};proto.readPI=function()
{for(var c=this.getChar();c!==EOF_CHAR;c=this.getChar()){this.addToString(c);if(c==='?'&&this.matchChar('>')){this.addToString('>');return true;}}
this.parser.addError("msg.XML.bad.form");return false;};proto.getStringFromBuffer=function()
{return this.stringBuffer.join("");};proto.addToString=function()
{this.stringBuffer.push.apply(this.stringBuffer,arguments);};proto.ungetChar=function(c)
{if(this.ungetBuffer.length&&this.ungetBuffer[this.ungetBuffer.length-1]=='\n')Kit.codeBug();this.ungetBuffer.push(c);};proto.matchChar=function(test)
{var c=this.getChar();if(c===test){return true;}else{this.ungetChar(c);return false;}};proto.peekChar=function()
{var c=this.getChar();this.ungetChar(c);return c;};proto.getChar=function()
{if(this.ungetBuffer.length)return this.ungetBuffer.pop();for(;;){if(this.sourceCursor==this.sourceEnd){this.hitEOF=true;return EOF_CHAR;}
var c=this.sourceString.charAt(this.sourceCursor++);if(this.lineEndChar){if(this.lineEndChar=='\r'&&c=='\n'){this.lineEndChar='\n';continue;}
this.lineEndChar=undefined;this.lineStart=this.sourceCursor-1;this.lineno++;}
if(isLineTerminator(c)){this.lineEndChar=c;c='\n';}
if(isFormatChar(c)){continue;}
return c;}};proto.skipLine=function()
{var c;while((c=this.getChar())!=EOF_CHAR&&c!='\n'){}
this.ungetChar(c);};proto.getOffset=function()
{var n=this.sourceCursor-this.lineStart;if(this.lineEndChar){--n;}
return n;};proto.getLine=function()
{var lineEnd=this.sourceCursor;if(this.lineEndChar){--lineEnd;}else{for(;lineEnd!=this.sourceEnd;++lineEnd){var c=this.sourceString.charAt(lineEnd);if(isLineTerminator(c)){break;}}}
return this.sourceString.substring(this.lineStart,lineEnd);};return{TokenStream:TokenStream};}();}}.call(null)){this.Concurrent.Thread.Compiler.TokenStream=TokenStream;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Concurrent.Thread.Compiler.IntermediateLanguage||(typeof this.Concurrent.Thread.Compiler.IntermediateLanguage!='object'&&typeof this.Concurrent.Thread.Compiler.IntermediateLanguage!='function'))this.Concurrent.Thread.Compiler.IntermediateLanguage=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(!this.Data.Cons.Util||(typeof this.Data.Cons.Util!='object'&&typeof this.Data.Cons.Util!='function'))this.Data.Cons.Util=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.IntermediateLanguage.Function===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.Function=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.Block===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.Block=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.GotoBlock===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.GotoBlock=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.CallBlock===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.CallBlock=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.NewBlock===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.NewBlock=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.Statement===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.Statement=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.ExpStatement===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.ExpStatement=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.CondStatement===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.CondStatement=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.RecvStatement===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.RecvStatement=undefined;if(this.Concurrent.Thread.Compiler.IntermediateLanguage.EnumStatement===undefined)this.Concurrent.Thread.Compiler.IntermediateLanguage.EnumStatement=undefined;with(function(){with(Data.Cons.Util){with(Data.Cons){with(Concurrent.Thread.Compiler.IntermediateLanguage){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler.IntermediateLanguage';function Function(name,params,vars,body,start){this.name=name;this.params=params;this.vars=vars;this.body=body;this.start=start;}
Function.prototype.toString=function(){return["function ",this.name,"( ",this.params.join(", ")," ) {\n","  var ",this.vars.join(", "),";\n",this.body.join("\n").replace(/^/mg,"  "),"\n}"].join("");};var block_id=0;function Block(scopes,body,target,exception){this.id="label"+block_id++;this.scopes=scopes;this.body=body;this.target=target;this.exception=exception;}
var proto=Block.prototype;proto.toString=function(){Kit.codeBug('"toString" is not implemented for ',this.constructor);};proto.appendStatement=function(){var args=arguments;if(this.body.isNil()){this.body=cons(arguments[0],this.body);args=Array.prototype.slice.call(arguments,1,arguments.length);}else{adder(this.body).apply(null,args);}};proto.prependStatement=function(){for(var i=arguments.length-1;i>=0;i--){this.body=cons(arguments[i],this.body);}};function stringify(b){if(b instanceof Block){return b.id;}else{return'"'+b+'"';}}
function GotoBlock(scopes,body,arg,target,exception){Block.call(this,scopes,body,target,exception);this.arg=arg;}
var proto=GotoBlock.prototype=new Block();proto.constructor=GotoBlock;proto.toString=function(){return[this.id,"([",this.scopes.join(", "),"], ",stringify(this.exception),"): {\n",this.body.join("\n").replace(/^/mg,"  "),"\n","  goto ",this.arg," -> ",stringify(this.target),"\n","}"].join("");};function CallBlock(scopes,body,this_val,func,args,target,exception){Block.call(this,scopes,body,target,exception);this.this_val=this_val;this.func=func;this.args=args;}
var proto=CallBlock.prototype=new Block();proto.constructor=CallBlock;proto.toString=function(){return[this.id,"([",this.scopes.join(", "),"], ",stringify(this.exception),"): {\n",this.body.join("\n").replace(/^/mg,"  "),"\n","  call ",this.this_val,".",this.func,"(",this.args.join(", "),") -> ",stringify(this.target),"\n","}"].join("");};function NewBlock(scopes,body,func,args,target,exception){Block.call(this,scopes,body,target,exception);this.func=func;this.args=args;}
var proto=NewBlock.prototype=new Block();proto.constructor=NewBlock;proto.toString=function(){return[this.id,"([",this.scopes.join(", "),"], ",stringify(this.exception),"): {\n",this.body.join("\n").replace(/^/mg,"  "),"\n","  new ",this.func,"(",this.args.join(", "),") -> ",stringify(this.target),"\n","}"].join("");};function Statement(){}
Statement.prototype.toString=function(){Kit.codeBug('"toString" is not implemented for ',this.constructor);};function ExpStatement(e){this.exp=e;}
var proto=ExpStatement.prototype=new Statement();proto.constructor=ExpStatement;proto.toString=function(){return this.exp+";";};function CondStatement(c,t){this.cond=c;this.target=t;}
var proto=CondStatement.prototype=new Statement();proto.constructor=CondStatement;proto.toString=function(){return["if ",this.cond," -> ",stringify(this.target),";"].join("");};function RecvStatement(a){this.assignee=a;}
var proto=RecvStatement.prototype=new Statement();proto.constructor=RecvStatement;proto.toString=function(){return["recv ",this.assignee,";"].join("");};function EnumStatement(e,a){this.exp=e;this.assignee=a;}
var proto=EnumStatement.prototype=new Statement();proto.constructor=EnumStatement;proto.toString=function(){return["enum ",this.assignee," <- ",this.exp,";"].join("");};return{Block:Block,RecvStatement:RecvStatement,GotoBlock:GotoBlock,Function:Function,NewBlock:NewBlock,ExpStatement:ExpStatement,CallBlock:CallBlock,EnumStatement:EnumStatement,Statement:Statement,CondStatement:CondStatement};}();}}}}.call(null)){this.Concurrent.Thread.Compiler.IntermediateLanguage.Block=Block;this.Concurrent.Thread.Compiler.IntermediateLanguage.RecvStatement=RecvStatement;this.Concurrent.Thread.Compiler.IntermediateLanguage.GotoBlock=GotoBlock;this.Concurrent.Thread.Compiler.IntermediateLanguage.Function=Function;this.Concurrent.Thread.Compiler.IntermediateLanguage.NewBlock=NewBlock;this.Concurrent.Thread.Compiler.IntermediateLanguage.ExpStatement=ExpStatement;this.Concurrent.Thread.Compiler.IntermediateLanguage.CallBlock=CallBlock;this.Concurrent.Thread.Compiler.IntermediateLanguage.EnumStatement=EnumStatement;this.Concurrent.Thread.Compiler.IntermediateLanguage.Statement=Statement;this.Concurrent.Thread.Compiler.IntermediateLanguage.CondStatement=CondStatement;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.CssConvert===undefined)this.Concurrent.Thread.Compiler.CssConvert=undefined;with(function(){with(Data.Cons){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var Css="Concurrent.Thread.Compiler.CssConvert";function CssConvert(func){return func[Css]();}
Statement.prototype[Css]=function(){Kit.codeBug("unimplemented '"+Css+"' method for: "+this);};EmptyStatement.prototype[Css]=function(){return this;};Block.prototype[Css]=function(){var head=last=cons(null,nil());for(var c=this.body;!c.isNil();c=c.cdr){last=last.cdr=cons(c.car[Css](),last.cdr);}
return new Block(this.labels,head.cdr,this.lineno,this.source);};ExpStatement.prototype[Css]=function(){return new ExpStatement(this.labels,this.exp[Css](),this.lineno,this.source);};VarStatement.prototype[Css]=function(){var decls=[];for(var i=0;i<this.decls.length;i++){decls[i]={id:this.decls[i].id,exp:this.decls[i].exp?this.decls[i].exp[Css]():null};}
return new VarStatement(this.labels,decls,this.lineno,this.source);};IfStatement.prototype[Css]=function(){return new IfStatement(this.labels,this.cond[Css](),this.body[Css](),this.lineno,this.source);};IfElseStatement.prototype[Css]=function(){return new IfElseStatement(this.labels,this.cond[Css](),this.tbody[Css](),this.fbody[Css](),this.lineno,this.source);};DoWhileStatement.prototype[Css]=function(){return new DoWhileStatement(this.labels,this.body[Css](),this.cond[Css](),this.lineno,this.source);};WhileStatement.prototype[Css]=function(){return new WhileStatement(this.labels,this.cond[Css](),this.body[Css](),this.lineno,this.source);};ForStatement.prototype[Css]=function(){return new ForStatement(this.labels,this.init?this.init[Css]():null,this.cond?this.cond[Css]():null,this.incr?this.incr[Css]():null,this.body[Css](),this.lineno,this.source);};ForVarStatement.prototype[Css]=function(){var decls=[];for(var i=0;i<this.decls.length;i++){decls[i]={id:this.decls[i].id,exp:this.decls[i].exp?this.decls[i].exp[Css]():null};}
return new ForVarStatement(this.labels,decls,this.cond?this.cond[Css]():null,this.incr?this.incr[Css]():null,this.body[Css](),this.lineno,this.source);};ForInStatement.prototype[Css]=function(){return new ForInStatement(this.labels,this.lhs[Css](),this.exp[Css](),this.body[Css](),this.lineno,this.source);};ForInVarStatement.prototype[Css]=function(){var decl={id:this.decl.id,exp:this.decl.exp?this.decl.exp[Css]():null};return new ForInVarStatement(this.labels,decl,this.exp[Css](),this.body[Css](),this.lineno,this.source);};ForEachStatement.prototype[Css]=function(){return new ForEachStatement(this.labels,this.lhs[Css](),this.exp[Css](),this.body[Css](),this.lineno,this.source);};ForEachVarStatement.prototype[Css]=function(){var decl={id:this.decl.id,exp:this.decl.exp?this.decl.exp[Css]():null};return new ForEachVarStatement(this.labels,decl,this.exp[Css](),this.body[Css](),this.lineno,this.source);};ContinueStatement.prototype[Css]=function(){return this;};BreakStatement.prototype[Css]=function(){return this;};ReturnStatement.prototype[Css]=function(){if(!this.exp)return this;return new ReturnStatement(this.labels,this.exp[Css](),this.lineno,this.source);};WithStatement.prototype[Css]=function(){return new WithStatement(this.labels,this.exp[Css](),this.body[Css](),this.lineno,this.source);};SwitchStatement.prototype[Css]=function(){var head=last=cons(null,nil());for(var c=this.clauses;!c.isNil();c=c.cdr){last=last.cdr=cons(c.car[Css](),last.cdr);}
return new SwitchStatement(this.labels,this.exp[Css](),head.cdr,this.lineno,this.source);};CaseClause.prototype[Css]=function(){var head=last=cons(null,nil());for(var c=this.body;!c.isNil();c=c.cdr){last=last.cdr=cons(c.car[Css](),last.cdr);}
return new CaseClause(this.exp[Css](),head.cdr,this.lineno,this.source);};DefaultClause.prototype[Css]=function(){var head=last=cons(null,nil());for(var c=this.body;!c.isNil();c=c.cdr){last=last.cdr=cons(c.car[Css](),last.cdr);}
return new DefaultClause(head.cdr,this.lineno,this.source);};ThrowStatement.prototype[Css]=function(){return new ThrowStatement(this.labels,this.exp[Css](),this.lineno,this.source);};TryCatchStatement.prototype[Css]=function(){return new TryCatchStatement(this.labels,this.tryBlock[Css](),this.variable,this.catchBlock[Css](),this.lineno,this.source);};TryFinallyStatement.prototype[Css]=function(){return new TryFinallyStatement(this.labels,this.tryBlock[Css](),this.finallyBlock[Css](),this.lineno,this.source);};TryCatchFinallyStatement.prototype[Css]=function(){return new TryCatchFinallyStatement(this.labels,this.tryBlock[Css](),this.variable,this.catchBlock[Css](),this.finallyBlock[Css](),this.lineno,this.source);};TryCatchListStatement.prototype[Css]=function(){if(this.catchList.isNil()){var block=this.tryBlock[Css]();block.labels=this.labels;return block;}else if(this.catchList.car.cond){var guard=this.catchList.car;return new TryCatchStatement(this.labels,this.tryBlock[Css](),guard.variable,new Block([],list(new IfElseStatement([],guard.cond[Css](),guard.block[Css](),(new TryCatchListStatement([],new Block([],list(new ThrowStatement([],guard.variable))),this.catchList.cdr,this.catchList.cdr.lineno,this.cdr.cdr.source))[Css](),guard.lineno,guard.source))));}else{var guard=this.catchList.car;return new TryCatchStatement(this.labels,this.tryBlock[Css](),guard.variable,guard.block[Css](),this.lineno,this.source);}};TryCatchListFinallyStatement.prototype[Css]=function(){return new TryFinallyStatement(this.labels,new Block([],list((new TryCatchListStatement([],this.tryBlock,this.catchList,this.lineno,this.source))[Css]()),this.lineno,this.source),this.finallyBlock[Css](),this.lineno,this.source);};FunctionDeclaration.prototype[Css]=function(){var head=last=cons(null,nil());for(var c=this.body;!c.isNil();c=c.cdr){last=last.cdr=cons(c.car[Css](),last.cdr);}
return new FunctionDeclaration(this.labels,this.name,this.params,head.cdr,this.lineno,this.source);};Expression.prototype[Css]=Statement.prototype[Css];UnaryExpression.prototype[Css]=function(){return new this.constructor(this.exp[Css]());};BinaryExpression.prototype[Css]=function(){return new this.constructor(this.left[Css](),this.right[Css]());};Literal.prototype[Css]=Identifier.prototype[Css]=ThisExpression.prototype[Css]=Elision.prototype[Css]=function(){return this;};ArrayInitializer.prototype[Css]=function(){var elems=[];for(var i=0;i<this.elems.length;i++){elems[i]=this.elems[i][Css]();}
return new ArrayInitializer(elems);};ObjectInitializer.prototype[Css]=function(){var pairs=[];for(var i=0;i<this.pairs.length;i++){pairs[i]={prop:this.pairs[i].prop,exp:this.pairs[i].exp[Css]()};}
return new ObjectInitializer(pairs);};FunctionExpression.prototype[Css]=function(){var head=last=cons(null,nil());for(var c=this.body;!c.isNil();c=c.cdr){last=last.cdr=cons(c.car[Css](),last.cdr);}
return new FunctionExpression(this.name,this.params,head.cdr);};DotAccessor.prototype[Css]=function(){return new DotAccessor(this.base[Css](),this.prop);};NewExpression.prototype[Css]=CallExpression.prototype[Css]=function(){var args=[];for(var i=0;i<this.args.length;i++){args[i]=this.args[i][Css]();}
return new this.constructor(this.func[Css](),args);};ConditionalExpression.prototype[Css]=function(){return new ConditionalExpression(this.cond[Css](),this.texp[Css](),this.fexp[Css]());};return{CssConvert:CssConvert};}();}}}.call(null)){this.Concurrent.Thread.Compiler.CssConvert=CssConvert;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.Parser===undefined)this.Concurrent.Thread.Compiler.Parser=undefined;with(function(){with(Data.Cons){with(Data){with(Data.Error){with(Concurrent.Thread.Compiler){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var CLEAR_TI_MASK=0xFFFF;var TI_AFTER_EOL=1<<16;var TI_CHECK_LABEL=1<<17;var ParserException=Exception.extend(function($super,message){$super(message);},{name:NAMESPACE+".ParserException"});function LabelException(label){this.label=label;}
var defaultReporter=new ErrorReporter();defaultReporter.error=function(message,line,lineSource,lineOffset){throw new SyntaxError("("+line+", "+lineOffset+"): "+message+"\nline: "+lineSource);};function Parser(errorReporter)
{this.errorReporter=errorReporter instanceof ErrorReporter?errorReporter:defaultReporter;this.ts=undefined;this.source=undefined;this.flaggedTokenBuffer=null;this.syntaxErrorCount=0;this.nestingOfFunction=0;this.nestingOfLoop=0;this.nestingOfSwitch=0;this.allLabelSet=null;this.loopLabelSet=null;}
var proto=Parser.prototype;proto.getMessage=function(messageId)
{return messageId;};proto.addWarning=function(messageId)
{this.errorReporter.warning(this.getMessage.apply(this,arguments),this.ts.getLineno(),this.ts.getLine(),this.ts.getOffset());};proto.addError=function(messageId)
{++this.syntaxErrorCount;this.errorReporter.error(this.getMessage.apply(this,arguments),this.ts.getLineno(),this.ts.getLine(),this.ts.getOffset());};proto.reportError=function(messageId)
{this.addError.apply(this,arguments);throw new ParserException();};proto.peekToken=function()
{var tt;if(this.flaggedTokenBuffer.isEmpty()){tt=this.ts.getToken();if(tt===Token.EOL){do{tt=this.ts.getToken();}while(tt===Token.EOL);tt|=TI_AFTER_EOL;}
this.flaggedTokenBuffer.push(tt);}else{tt=this.flaggedTokenBuffer.peek();}
return tt&CLEAR_TI_MASK;};proto.peekFlaggedToken=function()
{this.peekToken();return this.flaggedTokenBuffer.peek();};proto.consumeToken=function()
{this.flaggedTokenBuffer.pop();};proto.nextToken=function()
{var tt=this.peekToken();this.consumeToken();return tt;};proto.nextFlaggedToken=function()
{this.peekToken();var ttFlagged=this.flaggedTokenBuffer.peek();this.consumeToken();return ttFlagged;};proto.matchToken=function(toMatch)
{if(this.peekToken()!==toMatch)return false;this.consumeToken();return true;};proto.peekTokenOrEOL=function()
{var tt=this.peekToken();if(this.flaggedTokenBuffer.peek()&TI_AFTER_EOL)return Token.EOL;return tt;};proto.ungetToken=function(token)
{this.flaggedTokenBuffer.push(token);};proto.setCheckForLabel=function()
{var tt=this.flaggedTokenBuffer.pop();if((tt&CLEAR_TI_MASK)!==Token.NAME)throw Kit.codeBug();this.flaggedTokenBuffer.push(tt|TI_CHECK_LABEL);};proto.mustMatchToken=function(toMatch,messageId)
{if(!this.matchToken(toMatch)){var args=[];for(var i=1;i<arguments.length;i++)args.push(arguments[i]);this.reportError.apply(this,args);}};proto.eof=function()
{return this.ts.eof();};proto.insideFunction=function()
{return this.nestingOfFunction!==0;};proto.insideLoop=function()
{return this.nestingOfLoop!==0;};proto.enterLoop=function(labels)
{for(var i=0;i<labels.length;i++)this.loopLabelSet.add(labels[i]);this.nestingOfLoop++;};proto.exitLoop=function(labels)
{for(var i=0;i<labels.length;i++)this.loopLabelSet.remove(labels[i]);this.nestingOfLoop--;};proto.parse=function(sourceString,lineno,source)
{this.ts=new TokenStream(this,sourceString,lineno);this.source=source;this.flaggedTokenBuffer=new Stack();this.syntaxErrorCount=0;this.nestingOfFunction=0;this.nestingOfLoop=0;this.nestingOfSwitch=0;this.allLabelSet=new IdentifierSet();this.loopLabelSet=new IdentifierSet();try{var body=this.statements();this.mustMatchToken(Token.EOF,"msg.syntax");}catch(e){if(e instanceof ParserException){}else{throw e;}}
if(this.syntaxErrorCount){var msg="msg.got.syntax.errors";this.addError(msg);throw new SyntaxError(this.getMessage("msg.got.syntax.errors"));}
this.ts=null;return body;};proto.statements=function()
{var head,cell;cell=head=cons(null,nil());bodyLoop:for(;;){var n;switch(this.peekToken()){case Token.ERROR:case Token.EOF:case Token.RC:break bodyLoop;case Token.FUNCTION:this.consumeToken();n=this.functionDecl([]);break;default:n=this.statement();break;}
cell=cell.cdr=cons(n,cell.cdr);}
return head.cdr;};proto.functionDecl=function(labels)
{var baseLineno=this.ts.getLineno();this.mustMatchToken(Token.NAME,"msg.no.func.name");var name=new Identifier(this.ts.getString());var params=this.parameterList();var body=this.functionBody();return new FunctionDeclaration(labels,name,params,body,baseLineno,this.source);};proto.functionExpr=function()
{var name=null;if(this.matchToken(Token.NAME))name=new Identifier(this.ts.getString());var params=this.parameterList();var body=this.functionBody();return new FunctionExpression(name,params,body);};proto.parameterList=function()
{this.mustMatchToken(Token.LP,"msg.no.paren.parms");if(this.matchToken(Token.RP))return[];var params=[];var exists=new IdentifierSet();do{this.mustMatchToken(Token.NAME,"msg.no.parm");var p=new Identifier(this.ts.getString());if(exists.contains(p))this.addWarning("msg.dup.parms",s);params.push(p);exists.add(p);}while(this.matchToken(Token.COMMA));this.mustMatchToken(Token.RP,"msg.no.paren.after.parms");return params;};proto.functionBody=function()
{this.mustMatchToken(Token.LC,"msg.no.brace.body");var saveAllLabel=this.allLabelSet;var saveLoopLabel=this.loopLabelSet;var saveLoop=this.nestingOfLoop;var saveSwitch=this.nestingOfSwitch;this.allLabelSet=new IdentifierSet();this.loopLabelSet=new IdentifierSet();this.nestingOfLoop=0;this.nestingOfSwitch=0;this.nestingOfFunction++;try{var body=this.statements();}catch(e){if(e instanceof ParserException){}else{throw e;}}finally{this.allLabelSet=saveAllLabel;this.loopLabelSet=saveLoopLabel;this.nestingOfLoop=saveLoop;this.nestingOfSwitch=saveSwitch;this.nestingOfFunction--;}
this.mustMatchToken(Token.RC,"msg.no.brace.after.body");return body;};proto.statement=function()
{try{var n=this.statementHelper([]);if(n!=null)return n;}catch(e){if(e instanceof ParserException){}else{throw e;}}
guessingStatementEnd:for(;;){var tt=this.peekTokenOrEOL();this.consumeToken();switch(tt){case Token.ERROR:case Token.EOF:case Token.EOL:case Token.SEMI:break guessingStatementEnd;}}
return null;};proto.statementHelper=function(labels)
{var statement=null;switch(this.peekToken()){case Token.IF:{this.consumeToken();var lineno=this.ts.getLineno();var cond=this.condition();var tstat=this.statement();if(this.matchToken(Token.ELSE)){return new IfElseStatement(labels,cond,tstat,this.statement(),lineno,this.source);}else{return new IfStatement(labels,cond,tstat,lineno,this.source);}}
case Token.SWITCH:{this.consumeToken();var lineno=this.ts.getLineno();this.mustMatchToken(Token.LP,"msg.no.paren.switch");var exp=this.expr(false);this.mustMatchToken(Token.RP,"msg.no.paren.after.switch");this.mustMatchToken(Token.LC,"msg.no.brace.switch");var switchStatement=new SwitchStatement(labels,exp,nil(),lineno,this.source);var clauses=cons(nil(),nil());var last=clauses;this.nestingOfSwitch++;try{var hasDefault=false;switchLoop:for(;;){var lineno=this.ts.getLineno();var caseExpression;switch(this.nextToken()){case Token.RC:break switchLoop;case Token.CASE:caseExpression=this.expr(false);this.mustMatchToken(Token.COLON,"msg.no.colon.case");break;case Token.DEFAULT:if(hasDefault)this.reportError("msg.double.switch.default");hasDefault=true;caseExpression=null;this.mustMatchToken(Token.COLON,"msg.no.colon.case");break;default:this.reportError("msg.bad.switch");break switchLoop;}
var c=caseExpression?new CaseClause(caseExpression,this.statementsInSwitch(),lineno,this.source):new DefaultClause(this.statementsInSwitch(),lineno,this.source);last=last.cdr=cons(c,last.cdr);}}finally{this.nestingOfSwitch--;}
switchStatement.clauses=clauses.cdr;return switchStatement;}
case Token.WHILE:{this.consumeToken();var lineno=this.ts.getLineno();this.enterLoop(labels);try{return new WhileStatement(labels,this.condition(),this.statement(),lineno,this.source);}finally{this.exitLoop(labels);}}
case Token.DO:{this.consumeToken();var lineno=this.ts.getLineno();this.enterLoop(labels);try{var body=this.statement();}finally{this.exitLoop(labels);}
this.mustMatchToken(Token.WHILE,"msg.no.while.do");var cond=this.condition();this.matchToken(Token.SEMI);return new DoWhileStatement(labels,body,cond,lineno,this.source);}
case Token.FOR:{this.consumeToken();var lineno=this.ts.getLineno();var init;var cond;var incr=null;var body;var isForEach=false;var isForIn=false;var isVar=false;if(this.matchToken(Token.NAME)){if(this.ts.getString()==="each"){isForEach=true;}else{this.reportError("msg.no.paren.for");}}
this.mustMatchToken(Token.LP,"msg.no.paren.for");var tt=this.peekToken();if(tt===Token.SEMI){init=null;}else{if(tt===Token.VAR){this.consumeToken();init=this.variables(true);isVar=true;}
else{init=this.expr(true);}}
if(this.matchToken(Token.IN)){isForIn=true;cond=this.expr(false);}else{this.mustMatchToken(Token.SEMI,"msg.no.semi.for");if(this.peekToken()===Token.SEMI){cond=null;}else{cond=this.expr(false);}
this.mustMatchToken(Token.SEMI,"msg.no.semi.for.cond");if(this.peekToken()===Token.RP){incr=null;}else{incr=this.expr(false);}}
this.mustMatchToken(Token.RP,"msg.no.paren.for.ctrl");this.enterLoop(labels);try{body=this.statement();}finally{this.exitLoop(labels);}
if(!isForIn){if(isVar)return new ForVarStatement(labels,init,cond,incr,body,lineno,this.source);else return new ForStatement(labels,init,cond,incr,body,lineno,this.source);}else{if(isVar){if(init.length!=1)this.reportError("msg.mult.index");if(isForEach)return new ForEachVarStatement(labels,init[0],cond,body,lineno,this.source);else return new ForInVarStatement(labels,init[0],cond,body,lineno,this.source);}else{if(!init.hasLvalue())this.reportError("msg.bad.for.in.lhs");if(isForEach)return new ForEachStatement(labels,init,cond,body,lineno,this.source);else return new ForInStatement(labels,init,cond,body,lineno,this.source);}}}
case Token.TRY:{this.consumeToken();var lineno=this.ts.getLineno();var tryBlock=this.statement();if(!(tryBlock instanceof Block)){this.addWarning("msg.no.brace.tryblock");tryBlock=new Block([],cons(tryBlock,nil()),tryBlock.lineno,tryBlock.source);}
var catchList;var cell=catchList=cons(null,nil());var sawDefaultCatch=false;var peek=this.peekToken();if(peek===Token.CATCH){while(this.matchToken(Token.CATCH)){if(sawDefaultCatch)this.reportError("msg.catch.unreachable");var line=this.ts.getLineno();this.mustMatchToken(Token.LP,"msg.no.paren.catch");this.mustMatchToken(Token.NAME,"msg.bad.catchcond");var variable=new Identifier(this.ts.getString());var cond=null;if(this.matchToken(Token.IF)){cond=this.expr(false);}else{sawDefaultCatch=true;}
this.mustMatchToken(Token.RP,"msg.bad.catchcond");this.mustMatchToken(Token.LC,"msg.no.brace.catchblock");var block=new Block([],this.statements(),line,this.source);this.mustMatchToken(Token.RC,"msg.no.brace.after.body");var clause=new CatchGuard(variable,cond,block,line,this.source);cell=cell.cdr=cons(clause,cell.cdr);}}else if(peek!==Token.FINALLY){this.mustMatchToken(Token.FINALLY,"msg.try.no.catchfinally");}
catchList=catchList.cdr;var finallyBlock=null;if(this.matchToken(Token.FINALLY)){finallyBlock=this.statement();if(!(finallyBlock instanceof Block)){this.addWarning("msg.no.brace.finallyblock");finallyBlock=new Block([],cons(finallyBlock,nil()),finallyBlock.lineno,finallyBlock.source);}}
return finallyBlock?new TryCatchListFinallyStatement(labels,tryBlock,catchList,finallyBlock,lineno,this.source):new TryCatchListStatement(labels,tryBlock,catchList,lineno,this.source);}
case Token.THROW:{this.consumeToken();if(this.peekTokenOrEOL()===Token.EOL){this.reportError("msg.bad.throw.eol");}
var lineno=this.ts.getLineno();statement=new ThrowStatement(labels,this.expr(false),lineno,this.source);break;}
case Token.BREAK:{this.consumeToken();var lineno=this.ts.getLineno();var target=this.matchJumpLabelName(Token.BREAK);if(target==null){if(!this.nestingOfLoop&&!this.nestingOfSwitch)this.reportError("msg.bad.break");}
statement=new BreakStatement(labels,target,lineno,this.source);break;}
case Token.CONTINUE:{this.consumeToken();var lineno=this.ts.getLineno();var target=this.matchJumpLabelName(Token.CONTINUE);if(target==null){if(!this.nestingOfLoop)reportError("msg.continue.outside");}
statement=new ContinueStatement(labels,target,lineno,this.source);break;}
case Token.WITH:{this.consumeToken();var lineno=this.ts.getLineno();this.mustMatchToken(Token.LP,"msg.no.paren.with");var exp=this.expr(false);this.mustMatchToken(Token.RP,"msg.no.paren.after.with");var body=this.statement();return new WithStatement(labels,exp,body,lineno,this.source);}
case Token.VAR:{this.consumeToken();statement=new VarStatement(labels,this.variables(false),lineno,this.source);break;}
case Token.RETURN:{if(!this.insideFunction())this.reportError("msg.bad.return");this.consumeToken();var lineno=this.ts.getLineno();var exp;switch(this.peekTokenOrEOL()){case Token.SEMI:case Token.RC:case Token.EOF:case Token.EOL:case Token.ERROR:exp=null;break;default:exp=this.expr(false);}
statement=new ReturnStatement(labels,exp,lineno,this.source);break;}
case Token.LC:this.consumeToken();var block=new Block(labels,this.statements(),lineno,this.source);this.mustMatchToken(Token.RC,"msg.no.brace.block");return block;case Token.ERROR:case Token.SEMI:this.consumeToken();return new EmptyStatement(labels,lineno,this.source);case Token.FUNCTION:{this.consumeToken();return this.functionDecl(labels);}
case Token.DEFAULT:{this.consumeToken();this.reportError("msg.XML.not.available");}
case Token.NAME:{var lineno=this.ts.getLineno();this.setCheckForLabel();try{statement=new ExpStatement(labels,this.expr(false),lineno,this.source);}catch(e){if(e instanceof LabelException){if(this.allLabelSet.contains(e.label))this.reportError("msg.dup.label");this.allLabelSet.add(e.label);labels.push(e.label);try{statement=this.statementHelper(labels);}finally{this.allLabelSet.remove(e.label);}
return statement;}else{throw e;}}
break;}
default:{var lineno=this.ts.getLineno();statement=new ExpStatement(labels,this.expr(false),lineno,this.source);break;}}
switch(this.peekTokenOrEOL()){case Token.SEMI:this.consumeToken();break;case Token.ERROR:case Token.EOF:case Token.EOL:case Token.RC:break;default:this.reportError("msg.no.semi.stmt");}
return statement;};proto.condition=function()
{this.mustMatchToken(Token.LP,"msg.no.paren.cond");var exp=this.expr(false);this.mustMatchToken(Token.RP,"msg.no.paren.after.cond");if(exp instanceof SimpleAssignExpression)this.addWarning("msg.assign.cond");return exp;};proto.matchJumpLabelName=function(token)
{if(this.peekTokenOrEOL()!==Token.NAME)return null;var label=new Identifier(this.ts.getString());this.consumeToken();switch(token){case Token.CONTINUE:if(!this.loopLabelSet.contains(label)){this.reportError("msg.undef.label");}
break;case Token.BREAK:if(!this.allLabelSet.contains(label)){this.reportError("msg.undef.label");}
break;default:throw Kit.codeBug();}
return label;};proto.statementsInSwitch=function()
{var head,cell;head=cell=cons(null,nil());clauseLoop:for(;;){switch(this.peekToken()){case Token.ERROR:case Token.EOF:case Token.RC:case Token.CASE:break clauseLoop;case Token.DEFAULT:this.consumeToken();var tt=this.peekToken();this.ungetToken(Token.DEFAULT);if(tt===Token.COLON)break clauseLoop;default:cell=cell.cdr=cons(this.statement(),cell.cdr);}}
return head.cdr;};proto.variables=function(inForInit)
{var decls=[];for(;;){this.mustMatchToken(Token.NAME,"msg.bad.var");var name=new Identifier(this.ts.getString());var init=this.matchToken(Token.ASSIGN)?this.assignExpr(inForInit):null;decls.push({id:name,exp:init});if(!this.matchToken(Token.COMMA))break;}
return decls;};proto.expr=function(inForInit)
{var exp=this.assignExpr(inForInit);while(this.matchToken(Token.COMMA)){exp=new CommaExpression(exp,this.assignExpr(inForInit));}
return exp;};proto.assignExpr=function(inForInit)
{var exp=this.condExpr(inForInit);var tt=this.peekToken();if(tt<Token.FIRST_ASSIGN||Token.LAST_ASSIGN<tt)return exp;if(!exp.hasLvalue())this.reportError("msg.bad.assign.left");switch(this.nextToken()){case Token.ASSIGN:return new SimpleAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_BITOR:return new BitOrAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_BITXOR:return new BitXorAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_BITAND:return new BitAndAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_LSH:return new LShiftAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_RSH:return new RShiftAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_URSH:return new URShiftAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_ADD:return new AddAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_SUB:return new SubAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_MUL:return new MulAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_DIV:return new DivAssignExpression(exp,this.assignExpr(inForInit));case Token.ASSIGN_MOD:return new ModAssignExpression(exp,this.assignExpr(inForInit));default:throw Kit.codeBug();}};proto.condExpr=function(inForInit)
{var exp=this.orExpr(inForInit);if(!this.matchToken(Token.HOOK))return exp;var ifTrue=this.assignExpr(false);this.mustMatchToken(Token.COLON,"msg.no.colon.cond");var ifFalse=this.assignExpr(inForInit);return new ConditionalExpression(exp,ifTrue,ifFalse);};proto.orExpr=function(inForInit)
{var exp=this.andExpr(inForInit);while(this.matchToken(Token.OR)){exp=new OrExpression(exp,this.andExpr(inForInit));}
return exp;};proto.andExpr=function(inForInit)
{var exp=this.bitOrExpr(inForInit);while(this.matchToken(Token.AND)){exp=new AndExpression(exp,this.bitOrExpr(inForInit));}
return exp;};proto.bitOrExpr=function(inForInit)
{var exp=this.bitXorExpr(inForInit);while(this.matchToken(Token.BITOR)){exp=new BitOrExpression(exp,this.bitXorExpr(inForInit));}
return exp;};proto.bitXorExpr=function(inForInit)
{var exp=this.bitAndExpr(inForInit);while(this.matchToken(Token.BITXOR)){exp=new BitXorExpression(exp,this.bitAndExpr(inForInit));}
return exp;};proto.bitAndExpr=function(inForInit)
{var exp=this.eqExpr(inForInit);while(this.matchToken(Token.BITAND)){exp=new BitAndExpression(exp,this.eqExpr(inForInit));}
return exp;};proto.eqExpr=function(inForInit)
{var exp=this.relExpr(inForInit);for(;;){var constructor;switch(this.peekToken()){case Token.EQ:constructor=EqualExpression;break;case Token.NE:constructor=NotEqualExpression;break;case Token.SHEQ:constructor=StrictEqualExpression;break;case Token.SHNE:constructor=StrictNotEqualExpression;break;default:return exp;}
this.consumeToken();exp=new constructor(exp,this.relExpr(inForInit));}};proto.relExpr=function(inForInit)
{var exp=this.shiftExpr();for(;;){var constructor;switch(this.peekToken()){case Token.IN:if(inForInit)return exp;constructor=InExpression;break;case Token.INSTANCEOF:constructor=InstanceofExpression;break;case Token.LE:constructor=LessEqualExpression;break;case Token.LT:constructor=LessThanExpression;break;case Token.GE:constructor=GreaterEqualExpression;break;case Token.GT:constructor=GreaterThanExpression;break;default:return exp;}
this.consumeToken();exp=new constructor(exp,this.shiftExpr());}};proto.shiftExpr=function()
{var exp=this.addExpr();for(;;){var constructor;switch(this.peekToken()){case Token.LSH:constructor=LShiftExpression;break;case Token.RSH:constructor=RShiftExpression;break;case Token.URSH:constructor=URShiftExpression;break;default:return exp;}
this.consumeToken();exp=new constructor(exp,this.addExpr());}};proto.addExpr=function()
{var exp=this.mulExpr();for(;;){var constructor;switch(this.peekToken()){case Token.ADD:constructor=AddExpression;break;case Token.SUB:constructor=SubExpression;break;default:return exp;}
this.consumeToken();exp=new constructor(exp,this.mulExpr());}};proto.mulExpr=function()
{var exp=this.unaryExpr();for(;;){var constructor;switch(this.peekToken()){case Token.MUL:constructor=MulExpression;break;case Token.DIV:constructor=DivExpression;break;case Token.MOD:constructor=ModExpression;break;default:return exp;}
this.consumeToken();exp=new constructor(exp,this.unaryExpr());}};proto.unaryExpr=function()
{var constructor;var needLvalue=null;switch(this.peekToken()){case Token.VOID:constructor=VoidExpression;break;case Token.NOT:constructor=NotExpression;break;case Token.BITNOT:constructor=BitNotExpression;break;case Token.TYPEOF:constructor=TypeofExpression;break;case Token.ADD:constructor=PosExpression;break;case Token.SUB:constructor=NegExpression;break;case Token.INC:constructor=PreIncExpression;needLvalue="msg.bad.incr";break;case Token.DEC:constructor=PreDecExpression;needLvalue="msg.bad.decr";break;case Token.DELPROP:constructor=DeleteExpression;break;default:var exp=this.memberExpr(true);switch(this.peekTokenOrEOL()){case Token.INC:if(!exp.hasLvalue())this.reportError("msg.bad.incr");this.consumeToken();return new PostIncExpression(exp);case Token.DEC:if(!exp.hasLvalue())this.reportError("msg.bad.decr");this.consumeToken();return new PostDecExpression(exp);default:return exp;}}
this.consumeToken();var exp=this.unaryExpr();if(needLvalue&&!exp.hasLvalue())this.reportError(needLvalue);return new constructor(exp);};proto.argumentList=function()
{if(this.matchToken(Token.RP))return[];var args=[];do{args.push(this.assignExpr(false));}while(this.matchToken(Token.COMMA));this.mustMatchToken(Token.RP,"msg.no.paren.arg");return args;};proto.memberExpr=function(allowCallSyntax)
{var base;if(this.matchToken(Token.NEW)){var func=this.memberExpr(false);var args=this.matchToken(Token.LP)?this.argumentList():[];base=new NewExpression(func,args);}else{base=this.primaryExpr();}
return this.memberExprTail(allowCallSyntax,base);}
proto.memberExprTail=function(allowCallSyntax,base)
{tailLoop:for(;;){switch(this.peekToken()){case Token.DOTDOT:this.reportError("msg.XML.not.available");case Token.DOT:{this.consumeToken();switch(this.nextToken()){case Token.NAME:base=new DotAccessor(base,new Identifier(this.ts.getString()));break;case Token.MUL:this.reportError("msg.XML.not.available");case Token.XMLATTR:this.reportError("msg.XML.not.available");default:this.reportError("msg.no.name.after.dot");}}
break;case Token.DOTQUERY:this.reportError("msg.XML.not.available");case Token.LB:this.consumeToken();base=new BracketAccessor(base,this.expr(false));this.mustMatchToken(Token.RB,"msg.no.bracket.index");break;case Token.LP:if(!allowCallSyntax)break tailLoop;this.consumeToken();base=new CallExpression(base,this.argumentList());break;default:break tailLoop;}}
return base;};proto.primaryExpr=function()
{var exp;var ttFlagged=this.nextFlaggedToken();var tt=ttFlagged&CLEAR_TI_MASK;switch(tt){case Token.FUNCTION:return this.functionExpr();case Token.LB:{var elems=[];elemLoop:for(;;){switch(this.peekToken()){case Token.RB:this.consumeToken();break elemLoop;case Token.COMMA:while(this.matchToken(Token.COMMA)){elems.push(new Elision());}
break;default:elems.push(this.assignExpr(false));if(this.matchToken(Token.COMMA)){continue elemLoop;}else if(this.matchToken(Token.RB)){break elemLoop;}else{this.reportError("msg.no.bracket.arg");}}}
return new ArrayInitializer(elems);}
case Token.LC:{var pairs=[];commaloop:do{var prop;switch(this.peekToken()){case Token.NAME:this.consumeToken();prop=new Identifier(this.ts.getString());break;case Token.STRING:this.consumeToken();prop=new StringLiteral(this.ts.getString());break;case Token.NUMBER:this.consumeToken();prop=new NumberLiteral(this.ts.getString());break;case Token.RC:break commaloop;default:this.reportError("msg.bad.prop");break commaloop;}
this.mustMatchToken(Token.COLON,"msg.no.colon.prop");pairs.push({prop:prop,exp:this.assignExpr(false)});}while(this.matchToken(Token.COMMA));this.mustMatchToken(Token.RC,"msg.no.brace.prop");return new ObjectInitializer(pairs);}
case Token.LP:var exp=this.expr(false);this.mustMatchToken(Token.RP,"msg.no.paren");return exp;case Token.XMLATTR:this.reportError("msg.XML.not.available");case Token.NAME:var name=new Identifier(this.ts.getString());if(ttFlagged&TI_CHECK_LABEL){if(this.matchToken(Token.COLON))throw new LabelException(name);}
return name;case Token.NUMBER:return new NumberLiteral(this.ts.getString());case Token.STRING:return new StringLiteral(this.ts.getString());case Token.DIV:case Token.ASSIGN_DIV:this.ts.readRegExp(tt);return new RegExpLiteral(this.ts.getString());case Token.NULL:return new NullLiteral();case Token.THIS:return new ThisExpression();case Token.TRUE:return new TrueLiteral();case Token.FALSE:return new FalseLiteral();case Token.RESERVED:this.reportError("msg.reserved.id");break;case Token.ERROR:break;case Token.EOF:this.reportError("msg.unexpected.eof");break;default:this.reportError("msg.syntax");break;}
return null;}
return{Parser:Parser};}();}}}}}.call(null)){this.Concurrent.Thread.Compiler.Parser=Parser;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(!this.Data.Cons.Util||(typeof this.Data.Cons.Util!='object'&&typeof this.Data.Cons.Util!='function'))this.Data.Cons.Util=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(this.Concurrent.Thread.Compiler.CfConvert===undefined)this.Concurrent.Thread.Compiler.CfConvert=undefined;if(this.Concurrent.Thread.Compiler.CyclicExceptionHandlerError===undefined)this.Concurrent.Thread.Compiler.CyclicExceptionHandlerError=undefined;with(function(){with(Data.Cons.Util){with(Data.Cons){with(Data.Error){with(Concurrent.Thread){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var IL=Concurrent.Thread.Compiler.IntermediateLanguage;var Cf="$Concurrent_Thread_Compiler_Cf";function CfConvert(func){var cache=new IdentifierMap();var start=CfTarget(func.start,cache);var cache2=new IdentifierMap();cache.values().forEach(function(it){cache2.put(new Identifier(it.id),it);});var body=cons(null,nil());append=adder(body);cacheToList(cache2).forEach(function(it){return append(cache2.get(it));});return new IL.Function(func.name,func.params,func.vars,body.cdr,start);}
function cacheToList(cache){var blocks=[];var depends=new IdentifierMap();cache.values().forEach(function(it){blocks.push(it);depends.put(new Identifier(it.id),it.exception instanceof IL.Block?new Identifier(it.exception.id):undefined);});return check_cyclic(depends);}
var CyclicExceptionHandlerError=Error.extend(function($super,message){$super(message);},{name:NAMESPACE+".CyclicExceptionHandlerError"});function check_cyclic(depends){var ok={};function traverse(id,path){if(ok[id])return"OK";var next=depends.get(id);if(!next){ok[id]=true;path.push(id);return"OK";}
path.forEach(function(it){if(it.valueOf()==id.valueOf()){throw new CyclicExceptionHandlerError("cyclic exception handler: "+path.concat([id]).join(" -> "));}});path.push(id);traverse(next,path);ok[id]=true;return"OK";}
var result=[];depends.keys().forEach(function(it){var path=[];traverse(it,path);result=path.concat(result);});return result.reverse();}
function CfTarget(b,cache){if(b==="return"||b==="throw")return b;if(cache.get(new Identifier(b.id)))return cache.get(new Identifier(b.id));return b[Cf](cache);}
IL.GotoBlock.prototype[Cf]=function(cache){var block=new IL.GotoBlock();cache.put(new Identifier(this.id),block);block.scopes=this.scopes.map(function(it){return it[Cf](cache);});block.body=this.body.map(function(it){return it[Cf](cache);});block.arg=this.arg[Cf](cache);block.target=CfTarget(this.target,cache);block.exception=CfTarget(this.exception,cache);return block;};IL.CallBlock.prototype[Cf]=function(cache){var block=new IL.CallBlock();cache.put(new Identifier(this.id),block);block.scopes=this.scopes.map(function(it){return it[Cf](cache);});block.body=this.body.map(function(it){return it[Cf](cache);});block.this_val=this.this_val[Cf](cache);block.func=this.func[Cf](cache);block.args=this.args.map(function(it){return it[Cf](cache);});block.target=CfTarget(this.target,cache);block.exception=CfTarget(this.exception,cache);return block;};IL.NewBlock.prototype[Cf]=function(cache){var block=new IL.NewBlock();cache.put(new Identifier(this.id),block);block.scopes=this.scopes.map(function(it){return it[Cf](cache);});block.body=this.body.map(function(it){return it[Cf](cache);});block.func=this.func[Cf](cache);block.args=this.args.map(function(it){return it[Cf](cache);});block.target=CfTarget(this.target,cache);block.exception=CfTarget(this.exception,cache);return block;};IL.ExpStatement.prototype[Cf]=function(cache){return new IL.ExpStatement(this.exp[Cf](cache));};IL.CondStatement.prototype[Cf]=function(cache){return new IL.CondStatement(this.cond[Cf](cache),CfTarget(this.target,cache));};IL.RecvStatement.prototype[Cf]=function(cache){return new IL.RecvStatement(this.assignee[Cf](cache));};IL.EnumStatement.prototype[Cf]=function(cache){return new IL.EnumStatement(this.exp[Cf](cache),this.assignee[Cf](cache));};Expression.prototype[Cf]=function(cache){return this;};UnaryExpression.prototype[Cf]=function(cache){return new this.constructor(this.exp[Cf](cache));};BinaryExpression.prototype[Cf]=function(cache){return new this.constructor(this.left[Cf](cache),this.right[Cf](cache));};ArrayInitializer.prototype[Cf]=function(cache){return new ArrayInitializer(this.elems.map(function(it){return it[Cf](cache);}));};FunctionExpression.prototype[Cf]=function(cache){return prepareTree(this);};ObjectInitializer.prototype[Cf]=function(cache){return new ObjectInitializer(this.pairs.map(function(it){return{prop:it.prop,exp:it.exp[Cf](cache)};}));};DotAccessor.prototype[Cf]=function(cache){return new DotAccessor(this.base[Cf](cache),this.prop);};ConditionalExpression.prototype[Cf]=function(cache){return new ConditionalExpression(this.cond[Cf](cache),this.texp[Cf](cache),this.fexp[Cf](cache));};return{CfConvert:CfConvert,CyclicExceptionHandlerError:CyclicExceptionHandlerError};}();}}}}}}.call(null)){this.Concurrent.Thread.Compiler.CfConvert=CfConvert;this.Concurrent.Thread.Compiler.CyclicExceptionHandlerError=CyclicExceptionHandlerError;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Functional||(typeof this.Data.Functional!='object'&&typeof this.Data.Functional!='function'))this.Data.Functional=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.CsConvert===undefined)this.Concurrent.Thread.Compiler.CsConvert=undefined;with(function(){with(Data.Functional){with(Data.Cons){with(Concurrent.Thread.Compiler){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var IL=Concurrent.Thread.Compiler.IntermediateLanguage;var Cs="Concurrent.Thread.Compiler.CsConvert";var STACK_VAR="$Concurrent_Thread_stack";var undefinedExp=new VoidExpression(new NumberLiteral(0));var emptyLabel=new Identifier("");function isStackVar(v){return v instanceof Identifier&&v.valueOf().match(/^$Concurrent_Thread_stack/);}
function Context(){this.stackVars=[];this.contBreak=new IdentifierMap();this.contContinue=new IdentifierMap();this.contReturn="return";this.contThrow="throw";this.scopes=[];}
var proto=Context.prototype;proto.getStackVar=function(n){n=Math.floor(n);if(isNaN(n)||n<0)Kit.codeBug("must be integer greater than zero");for(var i=this.stackVars.length;i<=n;i++){this.stackVars[i]=new Identifier(STACK_VAR+i);}
return this.stackVars[n];};proto.putBreakLabels=function(labels,target){if(!labels.length)return this.contBreak;var restore=this.contBreak;this.contBreak=this.contBreak.clone();for(var i=0;i<labels.length;i++){this.contBreak.put(labels[i],target);}
return restore;};proto.putBreakAndContinueLabels=function(labels,breakTarget,continueTarget){if(!labels.length){return{contBreak:this.contBreak,contContinue:this.contContinue};}
var restore={contBreak:this.contBreak,contContinue:this.contContinue};this.contBreak=this.contBreak.clone();this.contContinue=this.contContinue.clone();for(var i=0;i<labels.length;i++){this.contBreak.put(labels[i],breakTarget);this.contContinue.put(labels[i],continueTarget);}
return restore;};proto.getScopes=function(){return this.scopes.slice(0,this.scopes.length);};proto.pushScope=function(){return this.scopes.push.apply(this.scopes,arguments);};proto.popScope=function(){return this.scopes.pop();};proto.makeGotoBlock=function(arg,target){return new IL.GotoBlock(this.getScopes(),nil(),arg,target,this.contThrow);};function CsConvert(func){var context=new Context();var last_block=new IL.GotoBlock([],nil(),undefinedExp,"return","throw");func.body=CsStatements(func.body,list(last_block),context,0);func.start=func.body.car;func.vars=func.vars.concat(context.stackVars);return func;}
function CsStatements(stmts,follows,ctxt,sttop){if(stmts.isNil())return follows;follows=CsStatements(stmts.cdr,follows,ctxt,sttop);return stmts.car[Cs](follows,ctxt,sttop);}
function CsReference(exp,ctxt,sttop,rest){if(exp instanceof DotAccessor){var e=new DotAccessor(ctxt.getStackVar(sttop),exp.prop);var follows=rest(e,sttop+1);return exp.base[Cs](follows,ctxt,sttop);}else if(exp instanceof BracketAccessor){var e=new BracketAccessor(ctxt.getStackVar(sttop),ctxt.getStackVar(sttop+1));var follows=rest(e,sttop+2);follows=exp.right[Cs](follows,ctxt,sttop+1);return exp.left[Cs](follows,ctxt,sttop);}else if(exp instanceof Identifier){return rest(exp,sttop);}else{var follows=rest(ctxt.getStackVar(sttop),sttop+1);return exp[Cs](follows,ctxt,sttop);}}
EmptyStatement.prototype[Cs]=function(follows,ctxt,sttop){return follows;};Block.prototype[Cs]=function(follows,ctxt,sttop){var restore=ctxt.putBreakLabels(this.labels,follows.car);follows=cons(ctxt.makeGotoBlock(undefinedExp,follows.car),follows);try{return CsStatements(this.body,follows,ctxt,sttop);}finally{ctxt.contBreak=restore;}};ExpStatement.prototype[Cs]=function(follows,ctxt,sttop){return this.exp[Cs](follows,ctxt,sttop);};IfStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);var restore=ctxt.putBreakLabels(this.labels,next_block);try{follows=this.body[Cs](follows,ctxt,sttop);follows.car.prependStatement(new IL.CondStatement(new NotExpression(ctxt.getStackVar(sttop)),next_block));return this.cond[Cs](follows,ctxt,sttop);}finally{ctxt.contBreak=restore;}};IfElseStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);var restore=ctxt.putBreakLabels(this.labels,next_block);try{follows=this.tbody[Cs](follows,ctxt,sttop);var true_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);follows=this.fbody[Cs](follows,ctxt,sttop);follows.car.prependStatement(new IL.CondStatement(ctxt.getStackVar(sttop),true_block));return this.cond[Cs](follows,ctxt,sttop);}finally{ctxt.contBreak=restore;}};DoWhileStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;var first_block=ctxt.makeGotoBlock(undefinedExp,null);follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);if(this.cond.containsFunctionCall()){follows.car.prependStatement(new IL.CondStatement(ctxt.getStackVar(sttop),first_block));follows=this.cond[Cs](follows,ctxt,sttop);}else{follows.car.prependStatement(new IL.CondStatement(this.cond,first_block));}
var continue_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,follows.car),follows);var restore=ctxt.putBreakAndContinueLabels(this.labels.concat(emptyLabel),next_block,continue_block);try{follows=this.body[Cs](follows,ctxt,sttop);}finally{ctxt.contBreak=restore.contBreak;ctxt.contContinue=restore.contContinue;}
first_block.target=follows.car;return cons(ctxt.makeGotoBlock(undefinedExp,first_block),cons(first_block,follows));};WhileStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;var first_block=ctxt.makeGotoBlock(undefinedExp,null);follows=cons(ctxt.makeGotoBlock(undefinedExp,first_block),follows);var restore=ctxt.putBreakAndContinueLabels(this.labels.concat(emptyLabel),next_block,first_block);try{follows=this.body[Cs](follows,ctxt,sttop);}finally{ctxt.contBreak=restore.contBreak;ctxt.contContinue=restore.contContinue;}
if(this.cond.containsFunctionCall()){follows.car.prependStatement(new IL.CondStatement(new NotExpression(ctxt.getStackVar(sttop)),next_block));follows=this.cond[Cs](follows,ctxt,sttop);}else{follows.car.prependStatement(new IL.CondStatement(new NotExpression(this.cond),next_block));}
first_block.target=follows.car;return cons(ctxt.makeGotoBlock(undefinedExp,first_block),cons(first_block,follows));};ForStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;var last_block=ctxt.makeGotoBlock(undefinedExp,null);follows=cons(last_block,follows);if(this.incr)follows=this.incr[Cs](follows,ctxt,sttop);var incr_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,follows.car),follows);var restore=ctxt.putBreakAndContinueLabels(this.labels.concat(emptyLabel),next_block,incr_block);try{follows=this.body[Cs](follows,ctxt,sttop);}finally{ctxt.contBreak=restore.contBreak;ctxt.contContinue=restore.contContinue;}
if(this.cond){if(this.cond.containsFunctionCall()){follows.car.prependStatement(new IL.CondStatement(new NotExpression(ctxt.getStackVar(sttop)),next_block));follows=this.cond[Cs](follows,ctxt,sttop);}else{follows.car.prependStatement(new IL.CondStatement(new NotExpression(this.cond),next_block));}}
last_block.target=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,follows.car),follows);if(this.init){follows=this.init[Cs](follows,ctxt,sttop);}
return follows;};ForInStatement.prototype[Cs]=function(follows,ctxt,sttop){if(!this.lhs.hasLvalue())Kit.codeBug('for-in requires lvalue on the left hand side of "in": '+this);var next_block=follows.car;var loop_block=ctxt.makeGotoBlock(undefinedExp,null);follows=cons(ctxt.makeGotoBlock(undefinedExp,loop_block),follows);var restore=ctxt.putBreakAndContinueLabels(this.labels.concat(emptyLabel),next_block,loop_block);try{follows=this.body[Cs](follows,ctxt,sttop+2);}finally{ctxt.contBreak=restore.contBreak;ctxt.contContinue=restore.contContinue;}
if(this.lhs.containsFunctionCall()){follows=CsReference(this.lhs,ctxt,sttop+2,function(exp){follows.car.prependStatement(make_assign(exp,new BracketAccessor(ctxt.getStackVar(sttop),new PostIncExpression(ctxt.getStackVar(sttop+1)))));return follows;});}else{follows.car.prependStatement(make_assign(this.lhs,new BracketAccessor(ctxt.getStackVar(sttop),new PostIncExpression(ctxt.getStackVar(sttop+1)))));}
follows.car.prependStatement(new IL.CondStatement(new GreaterEqualExpression(ctxt.getStackVar(sttop+1),new DotAccessor(ctxt.getStackVar(sttop),new Identifier("length"))),next_block));loop_block.target=follows.car;follows=cons(loop_block,follows);follows=cons(ctxt.makeGotoBlock(undefinedExp,loop_block),follows);follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop+1),new NumberLiteral(0)));if(this.exp.containsFunctionCall()){follows.car.prependStatement(new IL.EnumStatement(ctxt.getStackVar(sttop),ctxt.getStackVar(sttop)));follows=this.exp[Cs](follows,ctxt,sttop);}else{follows.car.prependStatement(new IL.EnumStatement(this.exp,ctxt.getStackVar(sttop)));}
return follows;};ContinueStatement.prototype[Cs]=function(follows,ctxt,sttop){return cons(ctxt.makeGotoBlock(undefinedExp,ctxt.contContinue.get(this.target?this.target:emptyLabel)),follows);};BreakStatement.prototype[Cs]=function(follows,ctxt,sttop){var restore=ctxt.putBreakLabels(this.labels,follows.car);try{return cons(ctxt.makeGotoBlock(undefinedExp,ctxt.contBreak.get(this.target?this.target:emptyLabel)),follows);}finally{ctxt.contBreak=restore;}};ReturnStatement.prototype[Cs]=function(follows,ctxt,sttop){if(this.exp){if(this.exp.containsFunctionCall()){follows=cons(ctxt.makeGotoBlock(ctxt.getStackVar(sttop),ctxt.contReturn),follows);return this.exp[Cs](follows,ctxt,sttop);}else{return cons(ctxt.makeGotoBlock(this.exp,ctxt.contReturn),follows);}}else{return cons(ctxt.makeGotoBlock(undefinedExp,ctxt.contReturn),follows);}};WithStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;var restore=ctxt.putBreakLabels(this.labels,next_block);try{ctxt.pushScope(ctxt.getStackVar(sttop));try{follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);follows=this.body[Cs](follows,ctxt,sttop+1);}finally{ctxt.popScope();}
follows=cons(ctxt.makeGotoBlock(undefinedExp,follows.car),follows);return this.exp[Cs](follows,ctxt,sttop);}finally{ctxt.contBreak=restore;}};SwitchStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;var restore=ctxt.putBreakLabels(this.labels.concat(emptyLabel),next_block);try{var default_target=next_block;var cond_and_target=this.clauses.reverse().map(function(clause){follows=cons(ctxt.makeGotoBlock(undefinedExp,follows.car),follows);follows=CsStatements(clause.body,follows,ctxt,sttop);var clause_block=follows.car;if(clause instanceof DefaultClause){default_target=clause_block;ignore();}else{return{cond:clause.exp,target:clause_block};}});follows=cons(ctxt.makeGotoBlock(undefinedExp,default_target),follows);cond_and_target.forEach(function(it){if(it.cond.containsFunctionCall()){follows.car.prependStatement(new IL.CondStatement(new StrictEqualExpression(ctxt.getStackVar(sttop),ctxt.getStackVar(sttop+1)),it.target));follows=it.cond[Cs](follows,ctxt,sttop+1);}else{follows.car.prependStatement(new IL.CondStatement(new StrictEqualExpression(ctxt.getStackVar(sttop),it.cond),it.target));}});return this.exp[Cs](follows,ctxt,sttop);}finally{ctxt.contBreak=restore;}};ThrowStatement.prototype[Cs]=function(follows,ctxt,sttop){if(this.exp.containsFunctionCall()){follows=cons(ctxt.makeGotoBlock(ctxt.getStackVar(sttop),ctxt.contThrow),follows);return this.exp[Cs](follows,ctxt,sttop);}else{return cons(ctxt.makeGotoBlock(this.exp,ctxt.contThrow),follows);}};TryCatchStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);var restore=ctxt.putBreakLabels(this.labels,next_block);try{follows=this.catchBlock[Cs](follows,ctxt,sttop);follows.car.prependStatement(new IL.RecvStatement(this.variable));var storeContThrow=ctxt.contThrow;ctxt.contThrow=follows.car;try{follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);return this.tryBlock[Cs](follows,ctxt,sttop);}finally{ctxt.contThrow=storeContThrow;}}finally{ctxt.contBreak=restore;}};TryFinallyStatement.prototype[Cs]=function(follows,ctxt,sttop){var next_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);var restoreBreak=ctxt.putBreakLabels(this.labels,next_block);try{var self=this;var contBreak=new IdentifierMap();ctxt.contBreak.keys().forEach(function(label){follows=cons(ctxt.makeGotoBlock(undefinedExp,ctxt.contBreak.get(label)),follows);follows=self.finallyBlock[Cs](follows,ctxt,sttop);contBreak.put(label,follows.car);});var contContinue=new IdentifierMap();ctxt.contContinue.keys().forEach(function(label){follows=cons(ctxt.makeGotoBlock(undefinedExp,ctxt.contContinue.get(label)),follows);follows=self.finallyBlock[Cs](follows,ctxt,sttop);contContinue.put(label,follows.car);});follows=cons(ctxt.makeGotoBlock(ctxt.getStackVar(sttop),ctxt.contReturn),follows);follows=this.finallyBlock[Cs](follows,ctxt,sttop+1);follows.car.prependStatement(new IL.RecvStatement(ctxt.getStackVar(sttop)));var contReturn=follows.car;follows=cons(ctxt.makeGotoBlock(ctxt.getStackVar(sttop),ctxt.contThrow),follows);follows=this.finallyBlock[Cs](follows,ctxt,sttop+1);follows.car.prependStatement(new IL.RecvStatement(ctxt.getStackVar(sttop)));var contThrow=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);follows=this.finallyBlock[Cs](follows,ctxt,sttop);var restoreContinue=ctxt.contContinue;var restoreReturn=ctxt.contReturn;var restoreThrow=ctxt.contThrow;ctxt.contBreak=contBreak;ctxt.contContinue=contContinue;ctxt.contReturn=contReturn;ctxt.contThrow=contThrow;try{return this.tryBlock[Cs](follows,ctxt,sttop);}finally{ctxt.contContinue=restoreContinue;ctxt.contReturn=restoreReturn;ctxt.contThrow=restoreThrow;}}finally{ctxt.contBreak=restoreBreak;}};function make_assign(left,right){return new IL.ExpStatement(new SimpleAssignExpression(left,right));}
Expression.prototype[Cs]=function(follows,ctxt,sttop){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),this));return follows;};ArrayInitializer.prototype[Cs]=function(follows,ctxt,sttop){for(var asis_from=this.elems.length-1;asis_from>=0;asis_from--){if(this.elems[asis_from].containsFunctionCall())break;}
asis_from++;var elems=[];for(var i=0;i<asis_from;i++){elems[i]=ctxt.getStackVar(sttop+i);}
for(;i<this.elems.length;i++){elems[i]=this.elems[i];}
follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new ArrayInitializer(elems)));for(var i=asis_from-1;i>=0;i--){follows=this.elems[i][Cs](follows,ctxt,sttop+i);}
return follows;};ObjectInitializer.prototype[Cs]=function(follows,ctxt,sttop){for(var asis_from=this.pairs.length-1;asis_from>=0;asis_from--){if(this.pairs[asis_from].exp.containsFunctionCall())break;}
asis_from++;var pairs=[];for(var i=0;i<asis_from;i++){pairs[i]={prop:this.pairs[i].prop,exp:ctxt.getStackVar(sttop+i)};}
for(;i<this.pairs.length;i++){pairs[i]=this.pairs[i];}
follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new ObjectInitializer(pairs)));for(var i=asis_from-1;i>=0;i--){follows=this.pairs[i].exp[Cs](follows,ctxt,sttop+i);}
return follows;};UnaryExpression.prototype[Cs]=function(follows,ctxt,sttop){if(this.exp.containsFunctionCall()){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new this.constructor(ctxt.getStackVar(sttop))));return this.exp[Cs](follows,ctxt,sttop);}else{return Expression.prototype[Cs].apply(this,arguments);}};BinaryExpression.prototype[Cs]=function(follows,ctxt,sttop){if(this.right.containsFunctionCall()){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new this.constructor(ctxt.getStackVar(sttop),ctxt.getStackVar(sttop+1))));follows=this.right[Cs](follows,ctxt,sttop+1);return this.left[Cs](follows,ctxt,sttop);}else if(this.left.containsFunctionCall()){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new this.constructor(ctxt.getStackVar(sttop),this.right)));return this.left[Cs](follows,ctxt,sttop);}else{return Expression.prototype[Cs].apply(this,arguments);}};DotAccessor.prototype[Cs]=function(follows,ctxt,sttop){if(this.base.containsFunctionCall()){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new DotAccessor(ctxt.getStackVar(sttop),this.prop)));return this.base[Cs](follows,ctxt,sttop);}else{return Expression.prototype[Cs].apply(this,arguments);}};CallExpression.prototype[Cs]=function(follows,ctxt,sttop){var self=this;return CsReference(this.func,ctxt,sttop,function(func,sttop2){for(var asis_from=self.args.length-1;asis_from>=0;asis_from--){if(self.args[asis_from].containsFunctionCall())break;}
asis_from++;var args=[];for(var i=0;i<asis_from;i++){args[i]=ctxt.getStackVar(sttop2+i);}
for(;i<self.args.length;i++){args[i]=self.args[i];}
follows.car.prependStatement(new IL.RecvStatement(ctxt.getStackVar(sttop)));follows=cons(new IL.CallBlock(ctxt.getScopes(),nil(),func instanceof DotAccessor?func.base:func instanceof BracketAccessor?func.left:new NullLiteral(),func,args,follows.car,ctxt.contThrow),follows);for(var i=asis_from-1;i>=0;i--){follows=self.args[i][Cs](follows,ctxt,sttop2+i);}
return follows;});};NewExpression.prototype[Cs]=function(follows,ctxt,sttop){for(var asis_from=this.args.length-1;asis_from>=0;asis_from--){if(this.args[asis_from].containsFunctionCall())break;}
asis_from++;var args=[];for(var i=0;i<asis_from;i++){args[i]=ctxt.getStackVar(sttop+1+i);}
for(;i<this.args.length;i++){args[i]=this.args[i];}
follows.car.prependStatement(new IL.RecvStatement(ctxt.getStackVar(sttop)));follows=cons(new IL.NewBlock(ctxt.getScopes(),nil(),ctxt.getStackVar(sttop),args,follows.car,ctxt.contThrow),follows);for(var i=asis_from-1;i>=0;i--){follows=this.args[i][Cs](follows,ctxt,sttop+1+i);}
this.func[Cs](follows,ctxt,sttop);return follows;};AssignExpression.prototype[Cs]=function(follows,ctxt,sttop){var self=this;if(this.right.containsFunctionCall()){return CsReference(this.left,ctxt,sttop,function(left,sttop2){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new self.constructor(left,ctxt.getStackVar(sttop2))));return self.right[Cs](follows,ctxt,sttop2);});}else if(this.left.containsFunctionCall()){return CsReference(this.left,ctxt,sttop,function(left,sttop2){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new self.constructor(left,self.right)));return follows;});}else{return Expression.prototype[Cs].apply(this,arguments);}};AndExpression.prototype[Cs]=function(follows,ctxt,sttop){if(this.right.containsFunctionCall()){var next_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);follows=this.right[Cs](follows,ctxt,sttop);follows.car.prependStatement(new IL.CondStatement(new NotExpression(ctxt.getStackVar(sttop)),next_block));return this.left[Cs](follows,ctxt,sttop);}else if(this.left.containsFunctionCall()){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new AndExpression(ctxt.getStackVar(sttop),this.right)));return this.left[Cs](follows,ctxt,sttop);}else{return Expression.prototype[Cs].apply(this,arguments);}};OrExpression.prototype[Cs]=function(follows,ctxt,sttop){if(this.right.containsFunctionCall()){var next_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);follows=this.right[Cs](follows,ctxt,sttop);follows.car.prependStatement(new IL.CondStatement(ctxt.getStackVar(sttop),next_block));return this.left[Cs](follows,ctxt,sttop);}else if(this.left.containsFunctionCall()){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new OrExpression(ctxt.getStackVar(sttop),this.right)));return this.left[Cs](follows,ctxt,sttop);}else{return Expression.prototype[Cs].apply(this,arguments);}};ConditionalExpression.prototype[Cs]=function(follows,ctxt,sttop){if(this.texp.containsFunctionCall()||this.fexp.containsFunctionCall()){var next_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);follows=this.texp[Cs](follows,ctxt,sttop);var true_block=follows.car;follows=cons(ctxt.makeGotoBlock(undefinedExp,next_block),follows);follows=this.fexp[Cs](follows,ctxt,sttop);follows.car.prependStatement(new IL.CondStatement(ctxt.getStackVar(sttop),true_block));return this.cond[Cs](follows,ctxt,sttop);}else if(this.cond.containsFunctionCall()){follows.car.prependStatement(make_assign(ctxt.getStackVar(sttop),new ConditionalExpression(ctxt.getStackVar(sttop),this.texp,this.fexp)));return this.cond[Cs](follows,ctxt,sttop);}else{return Expression.prototype[Cs].apply(this,arguments);}};return{CsConvert:CsConvert};}();}}}}.call(null)){this.Concurrent.Thread.Compiler.CsConvert=CsConvert;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(!this.Data.Cons.Util||(typeof this.Data.Cons.Util!='object'&&typeof this.Data.Cons.Util!='function'))this.Data.Cons.Util=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.CvConvert===undefined)this.Concurrent.Thread.Compiler.CvConvert=undefined;with(function(){with(Data.Cons.Util){with(Data.Cons){with(Concurrent.Thread.Compiler){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var IL=IntermediateLanguage;var Cv="$Concurrent_Thread_Compiler_CvConvert";function CvConvert(func){var vars=new IdentifierSet()
function add_vars(){return vars.add.apply(vars,arguments);}
var decls=cons(null,nil());var add_decls=adder(decls);for(var c=func.body;!c.isNil();c=c.cdr){c.car=c.car[Cv](add_vars,add_decls);}
return new IL.Function(func.name,func.params,vars.toArray(),concat(decls,func.body).cdr);}
Statement.prototype[Cv]=function(add_vars,add_decls){return this;};Block.prototype[Cv]=function(add_vars,add_decls){for(var c=this.body;!c.isNil();c=c.cdr){c.car=c.car[Cv](add_vars,add_decls);}
return this;};VarStatement.prototype[Cv]=function(add_vars,add_decls){var assigns=[];for(var i=0;i<this.decls.length;i++){add_vars(this.decls[i].id);if(this.decls[i].exp){assigns.push(new SimpleAssignExpression(this.decls[i].id,this.decls[i].exp));}}
if(!assigns.length){return new EmptyStatement([],this.lineno,this.source);}else{var exp=assigns[0];for(var i=1;i<assigns.length;i++){exp=new CommaExpression(exp,assigns[i]);}
return new ExpStatement([],exp,this.lineno,this.source);}};IfStatement.prototype[Cv]=function(add_vars,add_decls){this.body=this.body[Cv](add_vars,add_decls);return this;};IfElseStatement.prototype[Cv]=function(add_vars,add_decls){this.tbody=this.tbody[Cv](add_vars,add_decls);this.fbody=this.fbody[Cv](add_vars,add_decls);return this;};DoWhileStatement.prototype[Cv]=IfStatement.prototype[Cv];WhileStatement.prototype[Cv]=IfStatement.prototype[Cv];ForStatement.prototype[Cv]=IfStatement.prototype[Cv];ForVarStatement.prototype[Cv]=function(add_vars,add_decls){var init=(new VarStatement([],this.decls))[Cv](add_vars,add_decls);if(init instanceof EmptyStatement){init=null;}else{init=init.exp;}
return new ForStatement(this.labels,init,this.cond,this.incr,this.body[Cv](add_vars,add_decls),this.lineno,this.source);};ForInStatement.prototype[Cv]=IfStatement.prototype[Cv];ForInVarStatement.prototype[Cv]=function(add_vars,add_decls){add_vars(this.decl.id);var for_in=new ForInStatement(this.labels,this.decl.id,this.exp,this.body[Cv](add_vars,add_decls),this.lineno,this.source);if(this.decl.exp){return new Block([],list(new ExpStatement([],new SimpleAssignExpression(this.decl.id,this.decl.exp),this.lineno,this.source),for_in),this.lineno,this.source);}else{return for_in;}};ForEachStatement.prototype[Cv]=IfStatement.prototype[Cv];ForEachVarStatement.prototype[Cv]=ForInVarStatement.prototype[Cv];WithStatement.prototype[Cv]=IfStatement.prototype[Cv];SwitchStatement.prototype[Cv]=function(add_vars,add_decls){for(var c=this.clauses;!c.isNil();c=c.cdr){c.car=c.car[Cv](add_vars,add_decls);}
return this;};CaseClause.prototype[Cv]=Block.prototype[Cv];DefaultClause.prototype[Cv]=Block.prototype[Cv];TryCatchStatement.prototype[Cv]=function(add_vars,add_decls){add_vars(this.variable);this.tryBlock=this.tryBlock[Cv](add_vars,add_decls);this.catchBlock=this.catchBlock[Cv](add_vars,add_decls);return this;};TryFinallyStatement.prototype[Cv]=function(add_vars,add_decls){this.tryBlock=this.tryBlock[Cv](add_vars,add_decls);this.finallyBlock=this.finallyBlock[Cv](add_vars,add_decls);return this;};TryCatchFinallyStatement.prototype[Cv]=function(add_vars,add_decls){add_vars(this.variable);this.tryBlock=this.tryBlock[Cv](add_vars,add_decls);this.catchBlock=this.catchBlock[Cv](add_vars,add_decls);this.finallyBlock=this.finallyBlock[Cv](add_vars,add_decls);return this;};FunctionDeclaration.prototype[Cv]=function(add_vars,add_decls){add_vars(this.name);add_decls(new ExpStatement([],new SimpleAssignExpression(this.name,new FunctionExpression(null,this.params,this.body)),this.lineno,this.source));return new EmptyStatement([]);};return{CvConvert:CvConvert};}();}}}}.call(null)){this.Concurrent.Thread.Compiler.CvConvert=CvConvert;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(!this.Data.Cons.Util||(typeof this.Data.Cons.Util!='object'&&typeof this.Data.Cons.Util!='function'))this.Data.Cons.Util=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(this.Concurrent.Thread.Compiler.CzConvert===undefined)this.Concurrent.Thread.Compiler.CzConvert=undefined;with(function(){with(Data.Cons.Util){with(Data.Cons){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';var IL=Concurrent.Thread.Compiler.IntermediateLanguage;var Cz="$Concurrent_Thread_Compiler_CzConvert";var PREFIX="$Concurrent_Thread_";var var_this=new Identifier(PREFIX+"this");var var_args=new Identifier(PREFIX+"arguments");var var_cont=new Identifier(PREFIX+"continuation");var var_self=new Identifier(PREFIX+"self");var var_compiled=new Identifier(PREFIX+"compiled");var var_intermediate=new Identifier(PREFIX+"intermediate");var name_arguments=new Identifier("arguments");var name_prototype=new Identifier("prototype");var name_apply=new Identifier("apply");var name_procedure=new Identifier("procedure");var name_this_val=new Identifier("this_val");var name_exception=new Identifier("exception");var var_null_function=new Identifier(PREFIX+"null_function");var null_function=new FunctionDeclaration([],var_null_function,[],nil());function CzConvert(func){var body=inner_function(func);return new FunctionExpression(null,[var_this,var_args,var_cont],list(new ReturnStatement([],new CallExpression(new DotAccessor(body,name_apply),[var_this,var_args]))));}
var arguments_callee=new DotAccessor(name_arguments,new Identifier("callee"));function inner_function(func){var blocks=func.body.map(function(it){return it[Cz]();});blocks=cons(var_declaration(func.vars),cons(null_function,cons(make_assign(var_args,name_arguments),cons(make_assign(arguments_callee,var_self),blocks))));adder(blocks)(make_return(func.start));return new FunctionExpression(null,func.params,blocks);}
function var_declaration(vars){if(!vars.length)return new EmptyStatement([]);var decls=[];vars.forEach(function(it){decls.push({id:it,exp:null});});return new VarStatement([],decls);}
function make_assign(lhs,rhs){return new ExpStatement([],new SimpleAssignExpression(lhs,rhs));}
var var_cont_ex=new DotAccessor(var_cont,name_exception);function target_to_name(b){if(b instanceof IL.Block){return new Identifier(PREFIX+b.id);}else if(b==="return"){return var_cont;}else if(b==="throw"){return var_cont_ex;}else{Kit.codeBug("invalid target");}}
var undefinedExp=new VoidExpression(new Literal(0));var name_continuation=new Identifier("continuation");var name_timeout=new Identifier("timeout");var name_ret_val=new Identifier("ret_val");function make_return(continuation,ret_val){return new ReturnStatement([],new ObjectInitializer([{prop:name_continuation,exp:target_to_name(continuation)},{prop:name_ret_val,exp:ret_val||undefinedExp},{prop:name_timeout,exp:undefinedExp}]));}
var assign_arguments=make_assign(name_arguments,var_args);function make_continuation(block,body){body=new Block([],body);for(var i=block.scopes.length-1;i>=0;i--){body=new WithStatement([],block.scopes[i],body);}
return new VarStatement([],[{id:target_to_name(block),exp:new ObjectInitializer([{prop:name_procedure,exp:new FunctionExpression(null,[var_intermediate],list(assign_arguments,body))},{prop:name_this_val,exp:new ThisExpression()},{prop:name_exception,exp:target_to_name(block.exception)}])}]);}
IL.GotoBlock.prototype[Cz]=function(){var body=this.body.map(function(it){return it[Cz]();});body=cons(null,body);adder(body)(make_return(this.target,this.arg));return make_continuation(this,body.cdr);};var string_object=new StringLiteral('"object"');var string_function=new StringLiteral('"function"');IL.CallBlock.prototype[Cz]=function(){var body=this.body.map(function(it){return it[Cz]();});body=cons(null,body);adder(body)(new IfElseStatement([],new AndExpression(this.func,new StrictEqualExpression(new TypeofExpression(new DotAccessor(this.func,var_compiled)),string_function)),new ReturnStatement([],new CallExpression(new DotAccessor(this.func,var_compiled),[this.this_val,new ArrayInitializer(this.args),target_to_name(this.target)])),make_return(this.target,new CallExpression(this.func,this.args))));return make_continuation(this,body.cdr);};IL.NewBlock.prototype[Cz]=function(){var body=this.body.map(function(it){return it[Cz]();});body=cons(null,body);adder(body)(new IfElseStatement([],new AndExpression(this.func,new StrictEqualExpression(new TypeofExpression(new DotAccessor(this.func,var_compiled)),string_function)),new Block([],list(make_assign(new DotAccessor(var_null_function,name_prototype),new DotAccessor(this.func,name_prototype)),make_assign(var_this,new NewExpression(var_null_function,[])),new ReturnStatement([],new CallExpression(new DotAccessor(this.func,var_compiled),[var_this,new ArrayInitializer(this.args),new ObjectInitializer([{prop:name_procedure,exp:new FunctionExpression(null,[var_intermediate],list(new IfStatement([],new NotExpression(new AndExpression(var_intermediate,new OrExpression(new StrictEqualExpression(new TypeofExpression(var_intermediate),string_object),new StrictEqualExpression(new TypeofExpression(var_intermediate),string_function)))),make_assign(var_intermediate,var_this)),make_assign(var_this,new NullLiteral()),make_return(this.target,var_intermediate)))},{prop:name_this_val,exp:new ThisExpression()},{prop:name_exception,exp:target_to_name(this.exception)}])])))),make_return(this.target,new NewExpression(this.func,this.args))));return make_continuation(this,body.cdr);};IL.ExpStatement.prototype[Cz]=function(){return new ExpStatement([],this.exp);};IL.CondStatement.prototype[Cz]=function(){return new IfStatement([],this.cond,make_return(this.target));};IL.RecvStatement.prototype[Cz]=function(){return make_assign(this.assignee,var_intermediate);};var name_push=new Identifier("push");IL.EnumStatement.prototype[Cz]=function(){return new Block([],list(make_assign(var_this,new ArrayInitializer([])),new ForInStatement([],var_intermediate,this.exp,new ExpStatement([],new CallExpression(new DotAccessor(var_this,name_push),[var_intermediate]))),make_assign(this.assignee,var_this),make_assign(var_this,new NullLiteral())));};return{CzConvert:CzConvert};}();}}}}.call(null)){this.Concurrent.Thread.Compiler.CzConvert=CzConvert;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Cons||(typeof this.Data.Cons!='object'&&typeof this.Data.Cons!='function'))this.Data.Cons=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(this.Concurrent.Thread.compile===undefined)this.Concurrent.Thread.compile=undefined;if(this.Concurrent.Thread.CACHE_LIMIT===undefined)this.Concurrent.Thread.CACHE_LIMIT=undefined;if(this.Concurrent.Thread.prepare===undefined)this.Concurrent.Thread.prepare=undefined;if(this.Concurrent.Thread.prepareTree===undefined)this.Concurrent.Thread.prepareTree=undefined;with(function(){with(Data.Cons){with(Concurrent.Thread.Compiler){with(Concurrent.Thread){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread';var IL=Concurrent.Thread.Compiler.IntermediateLanguage;var PREFIX="$Concurrent_Thread_";var var_self=new Identifier(PREFIX+"self");var var_compiled=new Identifier(PREFIX+"compiled");function compile(f){return eval(prepare(f));}
CACHE_LIMIT=50;var prepare_cache={};var cache_history=[];function prepare(f){if(typeof f!="function")throw new TypeError("argument must be a function");f=f.toString();var c=prepare_cache[f];if(c)return c;c=prepareTree(parseFunction(f)).toString();while(cache_history.length>=CACHE_LIMIT&&cache_history.length>0){delete prepare_cache[cache_history.shift()];}
if(CACHE_LIMIT>=1){prepare_cache[f]=c;cache_history.push(f);}
return c;}
function parseFunction(f){var stmts=(new Parser()).parse("("+f+");");if(!(stmts.car instanceof ExpStatement))throw new Error("not exp-statement!");if(!(stmts.car.exp instanceof FunctionExpression))throw new Error("not function-expression!");return stmts.car.exp;}
function prepareTree(f){if(!(f instanceof FunctionExpression))Kit.codeBug("not FunctionalExpression");var name=f.name;f.name=null;var g=CssConvert(f);g=CvConvert(g);g=CsConvert(g);g=CfConvert(g);g=CzConvert(g);return new CallExpression(new FunctionExpression(null,[],list(new VarStatement([],[{id:var_self,exp:f}]),name?new VarStatement([],[{id:name,exp:var_self}]):new EmptyStatement([]),new ExpStatement([],new SimpleAssignExpression(new DotAccessor(var_self,var_compiled),g)),new ReturnStatement([],var_self))),[]);}
return{compile:compile,prepareTree:prepareTree,prepare:prepare};}();}}}}.call(null)){this.Concurrent.Thread.compile=compile;this.Concurrent.Thread.prepareTree=prepareTree;this.Concurrent.Thread.prepare=prepare;}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Compiler||(typeof this.Concurrent.Thread.Compiler!='object'&&typeof this.Concurrent.Thread.Compiler!='function'))this.Concurrent.Thread.Compiler=new Object();with(function(){with(Concurrent.Thread.Compiler){return function(){var VERSION;var NAMESPACE;NAMESPACE='Concurrent.Thread.Compiler';WebBrowser.ScriptExecuter.register("text/x-script.multithreaded-js",function(src){eval(compile(src)).async(null);});function compile(src){var prog=(new Parser).parse(src);prog=new FunctionExpression(null,[],prog);prog=CssConvert(prog);prog=CvConvert(prog);prog=CsConvert(prog);prog=CfConvert(prog);prog.vars.forEach(function(it){if(!Object.prototype.hasOwnProperty.call(window,it))window[it]=undefined;});prog.vars=[];prog=CzConvert(prog);return["1, function(){","    var $Concurrent_Thread_self = function(){};","    $Concurrent_Thread_self.$Concurrent_Thread_compiled = ",prog,";","    return $Concurrent_Thread_self;","}()"].join("");}
return{};}();}}.call(null)){}}).call(null);(function(){if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Continuation||(typeof this.Concurrent.Thread.Continuation!='object'&&typeof this.Concurrent.Thread.Continuation!='function'))this.Concurrent.Thread.Continuation=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(this.Concurrent.Thread.Generator===undefined)this.Concurrent.Thread.Generator=undefined;with(function(){with(Concurrent.Thread.Continuation){with(Concurrent){with(Concurrent.Thread){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread';function Generator(f){if(typeof f!="function")throw new TypeError("not a function");if(typeof f.$Concurrent_Thread_compiled!="function")f=Thread.compile(f);this._mutex=new Mutex();this._cont_caller=null;this._buf=null;this._got=false;var self=this;var generate=eval(Thread.prepare(function(x){self._buf=x;self._got=true;try{self._cont_iter=currentContinuation();self._cont_caller();}catch(e){self._cont_iter=null;if(e instanceof ContinuationCalledException){return;}else{throw e;}}}));this._cont_iter=eval(Thread.prepare(function(){f(generate);self._got=false;self._cont_iter=null;self._cont_caller();}));}
var proto=Generator.prototype;proto.hasNext=function(){if(!this._mutex.isAcquirable())this._mutex.acquire();if(this._got)return true;if(!this._cont_iter)return false;var is_called=false;this._cont_caller=eval(Thread.prepare(function(){is_called=true;Thread.stop();}));var triplet=Thread.create(this._cont_iter)._triplet;triplet.timeout=void 0;while(1){while(triplet.timeout===void 0){try{triplet=triplet.continuation.procedure.call(triplet.continuation.this_val,triplet.ret_val);}catch(e){if(e instanceof NoContinuationException){return this._got;}else if(e instanceof NoExceptionHandlerException){throw e.thrown;}else{triplet.continuation=triplet.continuation.exception;triplet.ret_val=e;}}}
if(is_called){break;}else{triplet.continuation=triplet.continuation.exception;triplet.ret_val=new Error("can't suspend in non-converted context");}}
this._cont_caller=null;return this._got;};proto.hasNext.$Concurrent_Thread_compiled=eval(Thread.prepare(function(){this._mutex.acquire();try{if(this._got)return true;if(!this._cont_iter)return false;try{this._cont_caller=currentContinuation();this._cont_iter();}catch(e){this._cont_caller=null;if(e instanceof ContinuationCalledException){return this._got;}else{throw e;}}}finally{this._mutex.release();}})).$Concurrent_Thread_compiled;proto.next=eval(Thread.prepare(function(){if(this.hasNext()){var x=this._buf;this._buf=void 0;this._got=false;return x;}else{return void 0;}}));return{Generator:Generator};}();}}}}.call(null)){this.Concurrent.Thread.Generator=Generator;}}).call(null);(function(){if(!this.Data||(typeof this.Data!='object'&&typeof this.Data!='function'))this.Data=new Object();if(!this.Data.Error||(typeof this.Data.Error!='object'&&typeof this.Data.Error!='function'))this.Data.Error=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.JSON||(typeof this.Concurrent.Thread.JSON!='object'&&typeof this.Concurrent.Thread.JSON!='function'))this.Concurrent.Thread.JSON=new Object();if(!this.Concurrent.Thread.JSON.RPC||(typeof this.Concurrent.Thread.JSON.RPC!='object'&&typeof this.Concurrent.Thread.JSON.RPC!='function'))this.Concurrent.Thread.JSON.RPC=new Object();if(!this.JSON||(typeof this.JSON!='object'&&typeof this.JSON!='function'))this.JSON=new Object();if(!this.Util||(typeof this.Util!='object'&&typeof this.Util!='function'))this.Util=new Object();if(!this.Util.Arrayize||(typeof this.Util.Arrayize!='object'&&typeof this.Util.Arrayize!='function'))this.Util.Arrayize=new Object();if(this.Concurrent.Thread.JSON.RPC.bind===undefined)this.Concurrent.Thread.JSON.RPC.bind=undefined;if(this.Concurrent.Thread.JSON.RPC.JSONRPCError===undefined)this.Concurrent.Thread.JSON.RPC.JSONRPCError=undefined;with(function(){with(Data.Error){with(Util.Arrayize){with(JSON){with(Concurrent){with(Concurrent.Thread.JSON.RPC){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.JSON.RPC';function bind(opts){if(!(opts instanceof Object))throw new TypeError("argument for "+NAMESPACE+".bind must be a hash.");var request=opts.request;if(request!=null){if(!String(request).match(/^(?:GET|POST)$/i))throw new Error('"request" option must be "GET" or "POST".');}else{request="POST";}
var params=opts.params;if(params!=null){if(!String(params).match(/^(?:Named|Positioned)$/i))throw new Error('"params" option must be "Named" or "Positioned".');}else{params="Named";}
var body;if(request.match(/^POST$/i)){if(params.match(/^Named$/i)){body=makeNamedPost(opts.url,opts.method);}else{body=makePositionedPost(opts.url,opts.method);}}else{if(params.match(/^Named$/i)){body=makeNamedGet(opts.url,opts.method);}else{body=makePositionedGet(opts.url,opts.method);}}
var with_pre;var pre=opts.preprocess;if(pre!=null){if(typeof pre!="function")throw new TypeError('"preprocess" option must be function');with_pre=eval(Thread.prepare(function(){return body.apply(this,pre.apply(this,arguments));}));}else{with_pre=body;}
var post=opts.postprocess;if(post!=null){if(typeof post!="function")throw new TypeError('"preprocess" option must be function');return eval(Thread.prepare(function(){return post(with_pre.apply(this,arguments));}));}else{return with_pre;}}
var COMMON_HEADERS=['User-Agent','Concurrent.Thread.JSON.RPC','Accept','application/json'];var POST_HEADERS=COMMON_HEADERS.concat('Content-type','application/json');function makeNamedPost(url,method){return eval(Thread.prepare(function(){var res=Thread.Http.post(url,dump({version:"1.1",method:method,params:args2params(arguments)}),POST_HEADERS);res=eval("("+res.responseText+")");if(res.error)throw new JSONRPCError(res.error);return res.result;}));};function makePositionedPost(url,method){return eval(Thread.prepare(function(){var res=Thread.Http.post(url,dump({version:"1.1",method:method,params:arrayize(arguments)}),POST_HEADERS);res=eval("("+res.responseText+")");if(res.error)throw new JSONRPCError(res.error);return res.result;}));};function makeNamedGet(url,method){url=url.replace(/\/+$/,"")+"/"+encodeURIComponent(method)+"?";return eval(Thread.prepare(function(){var res=Thread.Http.get(url+params2query(args2params(arguments)),COMMON_HEADERS);res=eval("("+res.responseText+")");if(res.error)throw new JSONRPCError(res.error);return res.result;}));};function makePositionedGet(url,method){url=url.replace(/\/+$/,"")+"/"+encodeURIComponent(method)+"?";return eval(Thread.prepare(function(){arguments[arguments.length]={};arguments.length++;var res=Thread.Http.get(url+params2query(args2params(arguments)),COMMON_HEADERS);res=eval("("+res.responseText+")");if(res.error)throw new JSONRPCError(res.error);return res.result;}));};function args2params(args){var params={};if(args.length){var hash=args[args.length-1];if(!(hash instanceof Object))throw new Error("the last argument must be a hash");for(var i in hash){if(hash.hasOwnProperty(i))params[i]=hash[i];}
for(var i=0;i<args.length-1;i++){params[i]=args[i];}}
return params;}
function params2query(params){var query=[];for(var i in params){if(!params.hasOwnProperty(i))continue;if(params[i]instanceof Array){var arr=params[i];for(var j=0;j<arr.length;j++){query.push(encodeURIComponent(i)+"="+encodeURIComponent(arr[j]));}}else{query.push(encodeURIComponent(i)+"="+encodeURIComponent(params[i]));}}
return query.join("&");}
var JSONRPCError=Error.extend(function($super,e){if(e instanceof Object){$super(e.message);for(var i in e)this[i]=e[i];}else{$super(e);}},{name:NAMESPACE+".JSONRPCError"});return{JSONRPCError:JSONRPCError,bind:bind};}();}}}}}}.call(null)){this.Concurrent.Thread.JSON.RPC.JSONRPCError=JSONRPCError;this.Concurrent.Thread.JSON.RPC.bind=bind;}}).call(null);(function(){if(!this.WebBrowser||(typeof this.WebBrowser!='object'&&typeof this.WebBrowser!='function'))this.WebBrowser=new Object();if(!this.WebBrowser.GUI||(typeof this.WebBrowser.GUI!='object'&&typeof this.WebBrowser.GUI!='function'))this.WebBrowser.GUI=new Object();if(!this.WebBrowser.GUI.Event||(typeof this.WebBrowser.GUI.Event!='object'&&typeof this.WebBrowser.GUI.Event!='function'))this.WebBrowser.GUI.Event=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent||(typeof this.Concurrent!='object'&&typeof this.Concurrent!='function'))this.Concurrent=new Object();if(!this.Concurrent.Thread||(typeof this.Concurrent.Thread!='object'&&typeof this.Concurrent.Thread!='function'))this.Concurrent.Thread=new Object();if(!this.Concurrent.Thread.Event||(typeof this.Concurrent.Thread.Event!='object'&&typeof this.Concurrent.Thread.Event!='function'))this.Concurrent.Thread.Event=new Object();if(!this.Util||(typeof this.Util!='object'&&typeof this.Util!='function'))this.Util=new Object();if(!this.Util.Arrayize||(typeof this.Util.Arrayize!='object'&&typeof this.Util.Arrayize!='function'))this.Util.Arrayize=new Object();if(this.Concurrent.Thread.Event.waitFor===undefined)this.Concurrent.Thread.Event.waitFor=undefined;if(this.Concurrent.Thread.Event.select===undefined)this.Concurrent.Thread.Event.select=undefined;with(function(){with(Util.Arrayize){with(WebBrowser.GUI.Event){with(Concurrent){with(Concurrent.Thread.Event){return function(){var VERSION='0.0.0';var NAMESPACE;NAMESPACE='Concurrent.Thread.Event';var waitFor=eval(Concurrent.Thread.prepare(function waitFor(target,type,options){var arg={};for(var i in options)arg[i]=options[i];arg.target=target;arg.type=type;return select(arg);}));var select=eval(Concurrent.Thread.prepare(function select(){try{var signal={};set_handlers(arrayize(arguments),signal);Concurrent.Thread.stop();}catch(e){if(e===signal){return signal.event;}else{throw e;}}}));function set_handlers(args,signal){var self=Concurrent.Thread.self();args=args.map(function(arg){if(!arg.target||typeof arg.target!=="object"){throw new TypeError("not a object: "+target);}
return{target:arg.target,type:String(arg.type),useCapture:Boolean(arg.useCapture),preventDefault:Boolean(arg.preventDefault),stopPropagation:Boolean(arg.stopPropagation)};});var lsn_ids=args.map(function(arg){function handler(e){if(arg.preventDefault)e.preventDefault();if(arg.stopPropagation)e.stopPropagation();lsn_ids.forEach(function(id){detach(id);});var evt={};for(var i in e){if(typeof e[i]!=="function")evt[i]=e[i];}
signal.event=evt;self.notify(signal);}
return attach(arg.target,arg.type,handler,arg.useCapture);});}
return{waitFor:waitFor,select:select};}();}}}}}.call(null)){this.Concurrent.Thread.Event.waitFor=waitFor;this.Concurrent.Thread.Event.select=select;}}).call(null);
